ES 查询上下文

2020-09-28  本文已影响0人  handsomemao666

相关性分数

默认情况下,ES根据相关性分数对结果进行排序。
相关性分数是一个浮点型数字,通过元数据字段_score返回,分数越高,代表文档的相关性越大。分数计算依赖于这个查询是在查询上下文中(query context)还是在过滤上下文中(filter context)。

查询上下文(query context)

在查询上下文中,一个查询语句表示一个文档和查询语句的匹配程度。无论文档匹配与否,查询语句总能计算出一个相关性分数在_score字段上。

过滤上下文(filter context)

在过滤上下文中,一个查询语句表示一个文档是否匹配该查询语句。结果为是或者不是,无需计算分数。过滤上下文最经常被使用在结构化数据中,例如:

ES会字段缓存高频使用的过滤查询,从而提升性能。
过滤上下文出现在filter参数中,比如 在bool查询中的filter或者must_not参数,参数可以使用constant_score表示分数

GET /_search { "query": { "bool": { "must": [ { "match": { "title": "Search" }}, { "match": { "content": "Elasticsearch" }} ], "filter": [ { "term": { "status": "published" }}, { "range": { "publish_date": { "gte": "2015-01-01" }}} ] } } }

query参数代表查询上下文
bool 和两个 match 用在查询上下文
filter参数用在过滤上下文

上一篇下一篇

猜你喜欢

热点阅读