Elasticsearch嵌套布尔查询

时间:2019-01-13 09:51:15

标签: elasticsearch

棕色和红色的文档比仅棕色或红色的文档得分高吗?

GET /_search
{
  "query": {
    "bool": {
      "should": [
        { "term": { "text": "quick" }},
        { "term": { "text": "fox"   }},
        {
          "bool": {
            "should": [
              { "term": { "text": "brown" }},
              { "term": { "text": "red"   }}
            ]
          }
        }
      ]
    }
  }
}

1 个答案:

答案 0 :(得分:0)

在大多数情况下-,如果没有其他差异,则得分会更高。原因是布尔查询评分是对每个其他子句的分数求和。

这意味着weight(text:brown)将被添加到weight(text:red)中,这通常会导致得分更高。

但是,不同之处在于,根据tf-idf的概念,对于任何匹配的文档,每个权重部分都可能不同。

以下是总体建议-如果您不确定如何获取查询分数,则应在json中使用"explain": true。这将有助于理解和调试计分过程中发生的事情。

有关Explain API的更多信息-https://www.elastic.co/guide/en/elasticsearch/reference/current/search-explain.html