elasticsearch 如果我没有';你不在乎得分吗?
我对ElasticSearch进行了几次查询,通过关键字检索文档(我通过代码或内部id匹配它们)。我真的不在乎在这些查询中打分,只在乎检索文档elasticsearch 如果我没有';你不在乎得分吗?,elasticsearch,elasticsearch,我对ElasticSearch进行了几次查询,通过关键字检索文档(我通过代码或内部id匹配它们)。我真的不在乎在这些查询中打分,只在乎检索文档 将我在常量分数过滤器中使用的bool查询包装起来会提高性能吗?还是有意义?没有意义。如果您使用的是查询,则可以对其应用筛选器 GET /_search { "query": { "bool": { "must": [ { "match": { "title": "Search" }},
将我在常量分数过滤器中使用的bool查询包装起来会提高性能吗?还是有意义?没有意义。如果您使用的是查询,则可以对其应用筛选器
GET /_search
{
"query": {
"bool": {
"must": [
{ "match": { "title": "Search" }},
{ "match": { "content": "Elasticsearch" }}
],
"filter": [
{ "term": { "status": "published" }},
{ "range": { "publish_date": { "gte": "2015-01-01" }}}
]
}
}
}
筛选-子句(查询)必须出现在匹配的文档中。但是,查询的分数将被忽略。过滤器子句在过滤器上下文中执行,这意味着忽略评分,并考虑缓存子句
评分时应使用更多的恒定评分
,因此如果存在匹配,则将“提升
”值作为评分
总结:当您需要分数时,使用filter for filter和constant_score如果他不关心分数,那么您也可以将
匹配
查询从必须
部分移动到过滤器
部分,因为must
查询是有评分的。@Val这里我只是从文档中复制了查询,以展示它们是如何做到这一点的。是的,所有不需要得分的东西都会进入filter@VolodymyrBilyachat从性能的角度来看,如果我不在乎得分,是否最好将匹配项放入筛选器中?@Mat Tap我认为您不会注意到差异,但您应该有一个规则,例如如果您需要将分数放入查询,如果您只需要将分数放入筛选器中