我正在尝试使用 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。
如果你有兴趣,下面的链接会给你更多的见解
关于Elasticsearch : constant_score query vs bool. 过滤查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51142871/