elasticsearch - Elasticsearch:改善多重比赛结果

标签 elasticsearch

嗨,我正在尝试在其他字段中搜索值。我正在将multi_match与cross_fields类型一起使用。
这是查询

"query": {
    "filtered": {
      "query": {
        "bool": {
          "must": [
            {
              "multi_match": {
                "query": "red cross",
                "type": "cross_fields",
                "fields": [
                  "name^20",
                  "keywords^12",
                  "description^1"
                ]
              }
            }
          ]
        }
      }
    }   }

我得到上述查询的结果
 "results": [
        {
            "name": "CrossPurpose",
            .....
        } ,
        {
            "name": "Community Center",
            "keywords": "American Red Cross,Red Cross,Center,Blood",
            . . .
          },
          {
             "name": "Some Group",
             "description":".... red cross ..."
          },
          .......
          ....
          ..
          {
             "name" : "Red cross" ,
              .....
          }
          ]

我想改善搜索结果。

我想在第一个位置看到名称为“红十字”的记录。
首先,它应与整个单词“red cross”匹配,然后仅应与“red”,“cross”匹配。

我希望名称字段的优先级高于关键字和描述的优先级。

请帮我改进查询。
提前致谢。

最佳答案

您需要使用type = best_fields

因此您的查询将是

{
  "query": {
    "multi_match" : {
      "query":      "red cross",
      "type":       "best_fields",
      "fields":     [ "name", "keywords", "description" ],
      "tie_breaker": 0.3
    }
  }
}

关于elasticsearch - Elasticsearch:改善多重比赛结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50250508/

相关文章:

elasticsearch - 如何从ElasticSearch检索脚本字段以及其他字段

docker - EKS-Kubernetes-ES-错误:elasticsearch过程的最大文件描述符[4096]太低,至少增加到[65536]

security - Logstash:logstash输入中的多个插件

c# - C#嵌套Elasticsearch将GUID转换为数组

elasticsearch - ElasticSearch:解释所有文档 “_size”和 “store.size_in_bytes” API端点之和之间的差异吗?

java - Elasticsearch 中的文档索引,JAVA API

java - 弹性 SearchRequestBuilder 中的 setQuery() 和 setSource() 有什么区别?

elasticsearch - Elasticsearch无法运行

elasticsearch - 读取geo_shape作为GeoJSON文本

elasticsearch - 弹性查询的 bool 查询