弹性搜索 - 如何在弹性搜索文档

时间:2016-10-20 07:55:53

标签: search elasticsearch

我有一个带有较少_score的文档,当我给出size:100时,在查询时没有检索到该文档。我需要在前25个结果中提供该文档。怎么做到这一点?有没有选择手动增加_score?

1 个答案:

答案 0 :(得分:1)

我将描述一种可行的方法来实现这一技巧

您可以使用 function_score 根据某些功能提升分数:

  

function_score查询提供了几种类型的得分函数。

     

script_score

     

重量

     

random_score

     

field_value_factor

     

衰减函数:高斯,线性,exp

示例,将使用 field_value_factor 通过乘以得分来提高分数:

{
  "query": {
    "function_score": {
      "query": {
        "match_all": {}
      },
      "script_score": {
        "script": "_score * doc['popularity'].value"
      },
      "boost_mode": "multiply"
    }
  }
}

要启用此动态评分,您需要根据Elastic的版本更改yml配置文件:

它要么(至少它是2.4的方式)

script.inline: true
script.indexed: true

或类似的东西:

script.disable_dynamic: false

有关动态脚本的更多信息 - https://www.elastic.co/guide/en/elasticsearch/reference/2.4/modules-scripting.html#enable-dynamic-scripting(您可以选择正在使用的Elastic版本)

有关功能评分和功能类型的更多信息: https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-function-score-query.html