Elasticsearch : constant_score query vs bool. 过滤查询

标签 elasticsearch elasticsearch-5

我正在尝试使用 Elasticsearch 获得完全匹配的结果(所以我不关心这里的评分)

我看到有两种方法可以做到这一点:

{
    "query" : {
        "constant_score" : {
            "filter" : {
                "term" : {
                    "exact_match_field" : "hello world !"
                }
            }
        }
    }
}

{
  "query": {
    "bool": {
      "filter": {
        "term": {
          "exact_match_field": "hello world !"
        }
      }
    }
  }
}

两者都有效并为我提供了我想要的结果。他们之间有什么区别?使用一个与另一个相比有性能优势吗?

(我使用的是 Elasticsearch V 5.6)

谢谢!

最佳答案

恒定分数查询对任何匹配的文档给出相同的分数,而不考虑任何评分因素,如 TF、IDF 等。当您不关心文档是否匹配多少但只关心时,可以使用此方法与过滤器不同,如果文档匹配或不匹配也会给出分数。

constant_score 查询采用一个 boost 参数,当与其他查询结合使用时,该参数设置为每个返回文档的分数。默认情况下,提升设置为 1。

如果你有兴趣,下面的链接会给你更多的见解

https://www.compose.com/articles/elasticsearch-query-time-strategies-and-techniques-for-relevance-part-ii/

关于Elasticsearch : constant_score query vs bool. 过滤查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51142871/

相关文章:

elasticsearch - 从MySQL加载数据到Elasticsearch

python - 聚合搜索 Elasticsearch 索引上的 "keyword"字段

elasticsearch - 如何在Elasticsearch中重命名字段?

node.js - 如何检查嵌套对象内是否存在所有值elasticsearch

amazon-web-services - 如何在快照中查找 Elasticsearch 索引?

elasticsearch - Fluentbit Kubernetes - 如何从现有日志中提取字段

java - 将 Elasticsearch 升级到 5.6.3

amazon-web-services - Logstash、EC2 和 Elasticsearch

elasticsearch - Elastic Search 从嵌套对象中删除元素

elasticsearch - 过滤ID值