elasticsearch - 基于某些字段的ElasticSearch结果排序(相关分数)(增强)

标签 elasticsearch

我使用ElasticSearch 6.6。我的应用程序通过从不同数据源提取数据来构建ES索引。搜索未指定数据源。它只是建立一个类似的查询:

GET employerdata/_search
{ 
  "query": 
  { 
    "bool": {
      "must": [
          {  "match" : {"name" : {
        "query": "WALMART",
        "fuzziness": "3"
      }}},
          {  "match" : {"state" : "TX"}}
        ]
    } 
  }

}

有一个名为“dataSource”的字段。但是,它不用于构建查询。但是,这是结果的一部分。基本上,我想在构建查询时隐式地使用此字段。例如,如果文档的“dataSource”等于“A”,则文档应位于结果集的顶部。换句话说,我想基于字段“dataSource”提高得分。但是,即使文档是来自其他“数据源”(例如“B”)的索引,我仍然希望获得结果。

最佳答案

要在@ apt-get_install_skill答案之上添加。如果在查询时需要提升而不是建立索引。您可以使用function_score

GET employer/_search
{
  "query": {
    "function_score": {
      "query": {
        "match_all": {}
      },
      "functions": [
        {
          "filter": {
            "match": {
              "dataSource": "B"
            }
          },
          "weight": 2
        }
      ]
    }
  }
}

关于elasticsearch - 基于某些字段的ElasticSearch结果排序(相关分数)(增强),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58068321/

相关文章:

elasticsearch - 按 id 查找嵌套文档

scala - 是否可以/建议使用elastic4s为JSON数据的字符串编制索引?

security - Elasticsearch 中的身份验证

elasticsearch - 在 Elasticsearch 中启动第二个节点时出现错误 "failed to obtain node locks, tried "

elasticsearch - 如何在 logstash.conf 文件中创建多个索引?

elasticsearch - 如何输入GET或发布新的Index Elasticsearch映射

regex - 模式不匹配流利 Elasticsearch

elasticsearch - 在ElasticSearch中按多个字段搜索确切短语

c# - 多术语搜索 NEST C#

Elasticsearch 模糊短语