Elasticsearch:constant_score 查询与 bool.filter 查询
Elasticsearch : constant_score query vs bool.filter query
我正在尝试使用 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。
如果你有兴趣,下面link会给你更多的见解
我正在尝试使用 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。
如果你有兴趣,下面link会给你更多的见解