elasticsearch 如果我没有';你不在乎得分吗?,elasticsearch,elasticsearch" /> elasticsearch 如果我没有';你不在乎得分吗?,elasticsearch,elasticsearch" />

elasticsearch 如果我没有';你不在乎得分吗?

elasticsearch 如果我没有';你不在乎得分吗?,elasticsearch,elasticsearch,我对ElasticSearch进行了几次查询,通过关键字检索文档(我通过代码或内部id匹配它们)。我真的不在乎在这些查询中打分,只在乎检索文档 将我在常量分数过滤器中使用的bool查询包装起来会提高性能吗?还是有意义?没有意义。如果您使用的是查询,则可以对其应用筛选器 GET /_search { "query": { "bool": { "must": [ { "match": { "title": "Search" }},

我对ElasticSearch进行了几次查询,通过关键字检索文档(我通过代码或内部id匹配它们)。我真的不在乎在这些查询中打分,只在乎检索文档


将我在常量分数过滤器中使用的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我认为您不会注意到差异,但您应该有一个规则,例如如果您需要将分数放入查询,如果您只需要将分数放入筛选器中