Elasticsearch(7) field_value_factor的使用

这篇具有很好参考价值的文章主要介绍了Elasticsearch(7) field_value_factor的使用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

elasticsearch version: 7.10.1
field_value_factor 是 Elasticsearch 中用于计算基于字段值的函数评分的一部分,它允许你根据文档中某个字段的值来调整该文档的评分。

field_value_factor语法

{  
  "query": {  
    "match_all": {}  
  },  
  "function_score": {  
    "functions": [  
      {  
        "field_value_factor": {  
          "field": "popularity",  
          "factor": 1,  
          "modifier": "log1p",  
          "missing": 1  
        }  
      }  
    ],  
    "score_mode": "multiply",  
    "boost_mode": "sum"  
  }  
}
{  
  "field_value_factor": {  
    "field": "your_field_name",  
    "factor": your_factor_value,  
    "modifier": "none | log | log1p | log2p | square | sqrt | reciprocal",  
    "missing": default_value_for_missing_field  
  }  
} 
  • field:这是你想要根据其值来调整评分的字段名。它应该是一个数值字段。
  • factor:一个乘数,用于调整字段值对最终评分的影响。例如,如果你想要将字段值乘以 10 来增加其影响,你可以设置 factor 为 10。
  • modifier:这是一个可选参数,它定义了如何修改字段值以计算其评分贡献。它可以是以下值之一:
    none:不进行任何修改,直接使用字段值。
    log:对字段值取自然对数。
    log1p:对字段值加 1 后取自然对数,这可以防止对 0 或负数取对数。
    log2p:对字段值加 1 后取以 2 为底的对数。
    square:计算字段值的平方。
    sqrt:计算字段值的平方根。
    reciprocal:计算字段值的倒数。
  • missing:当字段的值缺失或不存在时,使用的默认值。这确保即使某些文档缺少该字段,也可以计算一个评分。

field_value_factor案例

场景

我们想要根据产品的价格来调整搜索结果的评分。文章来源地址https://www.toymoban.com/news/detail-849553.html

索引创建

PUT /products  
{  
  "mappings": {  
    "properties": {  
      "title": {  
        "type": "text"  
      },  
      "price": {  
        "type": "float"  
      }  
    }  
  }  
}

文档插入

POST /products/_doc/1  
{  
  "title": "Product A",  
  "price": 100.0  
}  
  
POST /products/_doc/2  
{  
  "title": "Product B",  
  "price": 200.0  
}  
  
POST /products/_doc/3  
{  
  "title": "Product C",  
  "price": 50.0  
}

POST /products/_doc/4  
{  
  "title": "Product D",  
  "price": 150.0  
}  
  
POST /products/_doc/5  
{  
  "title": "Product E",  
  "price": 75.0  
}  
  
POST /products/_doc/6  
{  
  "title": "Product F",  
  "price": 300.0  
}  
  
POST /products/_doc/7  
{  
  "title": "Product G",  
  "price": 250.0  
}  
  
POST /products/_doc/8  
{  
  "title": "Product H",  
  "price": 125.0  
}

查询语句

GET /products/_search  
{  
  "query": {  
    "function_score": {  
      "query": {  
        "match_all": {}  
      },  
      "functions": [  
        {  
          "field_value_factor": {  
            "field": "price",  
            "factor": 1,  
            "modifier": "none",  
            "missing": 1  
          }  
        }  
      ],  
      "score_mode": "multiply",  
      "boost_mode": "replace"  
    }  
  }  
}

到了这里,关于Elasticsearch(7) field_value_factor的使用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Field error in object ‘xxx‘ on field ‘xxx‘: rejected value [xx];

    字段上对象“xxx”中的field错误,拒绝了值[xxx]。意思是:在Springboot等其他框架中编写程序时,前端传入的数据例如 前端代码如下 这个phone从客户端接收的值与后端entity中定义的属性值不匹配(与数据库定义的值的类型不匹配)时,就发生接收值类型错误。 解决办法: 看是

    2024年02月10日
    浏览(144)
  • 【注解使用】使用@Autowired后提示:Field injection is not recommended(Spring团队不推荐使用Field注入)

    在使用 IDEA 开发 SpringBoot 项目时,在  Controller  类中使用注解  @Autowired  注入一个依赖出现了警告提示,查看其他使用该注解的地方同样出现了警告提示。这是怎么回事?由于先去使用了SpringBoot并没有对Spring进行系统性学习,所以做一个记录。 Field injection is not recommended(

    2024年02月12日
    浏览(39)
  • Elasticsearch中fields的含义和使用场景作用用途干什么的

    一直不明白index中的字段的fields是干什么的,今天彻底搞明白. 在 Elasticsearch 中, fields 是用于定义字段的子字段(sub-field)的部分。它的作用是为同一个字段提供不同的处理和索引选项。 常见的使用场景和解决的问题包括: 排序:使用子字段定义一个字段的(keyword)类

    2024年02月09日
    浏览(38)
  • MySQL之Field‘***’doesn’t have a default value错误解决办法

    目录 一、找到mysql Server文件夹,打开my.ini配置文件,查找如下语句: 二、修改成如下: PS:如何找到my.ini文件。 第一步右键我的电脑(计算机)——点击管理(G),如下图所示: 第二步:点击服务和应用程序----服务选项  第三步:在右边服务中找到mysql之后右键--属性 第

    2024年01月24日
    浏览(63)
  • 【MySQL实践】一个隐蔽的问题导致 Field ‘xxx‘ doesn‘t have a default value

    最后在公司的后台系统上遇到了一个线上问题,是在插入某个表数据的时候出现了数据库的插入异常,即: java.sql.SQLException: Field \\\'xxx\\\' doesn\\\'t have a default value ,这其实是一个比较常见的异常,一般在 字段不能为null时 ,如果没有 显式的指定对应字段的值 就会抛出这个异常。

    2024年01月24日
    浏览(41)
  • Spring Boot微服务从yml文件中加载配置(使用@Value和@ConfigurationProperties)

    记录 :398 场景 :在Spring Boot的微服务中从application.yml等yml文件中加载自定义配置内容。使用@Value直接加载单个配置。使用@ConfigurationProperties注解把一个或者多个配置加载为Java对象。 版本 :JDK 1.8,SpringBoot 2.6.3 1.使用@Value注解加载配置 使用注解@RestController、@Service、@Component等

    2024年02月12日
    浏览(40)
  • Unable to make field private final byte[] java.lang.String.value accessible: module java.base does n

    问题: Unable to make field private final java.lang.String java.io.File.path accessible: module java.base does not “opens java.io” to unnamed module @4f3bc4f 原因: JDK版本过高导致的。修改为正常的1.8即可 解决

    2024年02月12日
    浏览(40)
  • Elasticsearch:Combined fields 查询

    有时一个匹配项可以覆盖多个文本字段。 在这种情况下,你可以使用 combined_fields 查询来搜索多个文本字段,就好像它们的值实际上已被索引到一个组合字段中一样。 除此之外,combined_fields 的主要好处是强大且易于理解的评分算法。这种做法也有类似于 copy_to​​​​​​​

    2023年04月19日
    浏览(34)
  • Elasticsearch 字段别名 field-alias

    Elasticsearch 8.1 Kibana 8.1 MacOS 10.14.6 首先我们还是先了解一下, 什么是字段别名? 大家可能听说过 索引别名 ,通过索引的别名可以轻松的切换所需的数据来源与哪一个索引,那么什么是字段别名呢?所谓字段别名,就是索引mapping定义时的备用字段,通过字段别名可以替换搜索

    2023年04月18日
    浏览(73)
  • Elasticsearch:二进制数据类型 - binary field

     二进制(binary)类型接受二进制值作为 Base64 编码字符串。 该字段默认不存储且不可搜索。Base64 编码的二进制值不得嵌入换行符 n 。 这听起来像是,将二进制对象存储在 Elasticsearch 中的单个字段中 二进制字段接受以下参数: 条目 描述 doc_values 该字段是否应该以列跨度的

    2024年02月09日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包