我正在尝试使用Elasticsearch获得完全匹配的结果(所以我不在乎在这里得分)
我看到有两种方法可以做到这一点:
{
"query" : {
"constant_score" : {
"filter" : {
"term" : {
"exact_match_field" : "hello world !"
}
}
}
}
}
或
{
"query": {
"bool": {
"filter": {
"term": {
"exact_match_field": "hello world !"
}
}
}
}
}
两者都可以工作,并且可以给我想要的结果。它们之间有什么区别?使用一个与另一个相比有性能优势吗?
(我正在使用Elasticsearch V 5.6)
谢谢!
答案 0 :(得分:5)
恒定分数查询为任何匹配的文档提供相等的分数,而不考虑诸如TF, IDF
等任何得分因素。当您不在乎文档是否匹配多少而只是文档匹配还是不匹配时,可以使用此分数不像过滤器那样也不给分数。
constant_score查询采用boost参数,当与其他查询结合使用时,该参数设置为每个返回文档的得分。默认情况下,boost设置为1。
如果您对下面的链接感兴趣,则会为您提供更多见识