8.Elasticsearch 7.15 query上下文和filter上下文

编程入门 行业动态 更新时间:2024-10-10 00:29:16

8.Elasticsearch 7.15 query<a href=https://www.elefans.com/category/jswz/34/1770489.html style=上下文和filter上下文"/>

8.Elasticsearch 7.15 query上下文和filter上下文

文章目录

  • 介绍
  • Query context
  • Filter context
  • 例子

介绍

默认情况下,Elasticsearch根据相关性得分对匹配的搜索结果进行排序,相关性得分衡量每个文档匹配查询的程度。

相关性得分是一个正的浮点数,在search API的_score元数据字段中返回。得分越高,说明文档的相关性越强。虽然每种查询类型可以以不同的方式计算相关性得分,但得分计算还取决于查询子句是在query上下文中运行还是在filter上下文中运行。

Query context

query上下文中,查询子句回答“这个文档匹配这个查询子句的程度如何?”除了决定文档是否匹配外,查询子句还在_score元数据字段中计算一个相关性得分

查询上下文在将查询子句传递给query参数时生效,比如_search API中的query参数。

Filter context

filter上下文中,查询子句回答“这个文档匹配这个查询子句吗?”答案是简单的“是”或“否”——不计算相关性得分。filter上下文主要用于过滤结构化数据,例如:

  • 这个 timestamp 时间戳字段在 2015 到 2016?
  • 这个 status 状态字段是否是发布状态 “published”?

Elasticsearch会自动缓存经常使用的过滤器,以提高性能。

过滤器上下文在将查询子句传递给filter参数时生效,比如bool查询中的filtermust_not参数、constant_score查询中的filter参数或filter aggregation

例子

下面是在_search API的query和filter上下文中使用查询子句的示例。该查询将匹配满足以下所有条件的文档:

  • title 字段包含 search 这个词.
  • content 字段包含 elasticsearch 这个词.
  • status 精确匹配 published 这个值.
  • publish_date 字段匹配从2015年1月1日起的日期.
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子句用于query上下文中,这意味着它们用于为每个文档的匹配情况打分。
  • filter参数表示filter上下文。它的term和range子句在filter上下文中使用。它们将过滤掉不匹配的文档,但不会影响匹配文档的得分。

更多推荐

8.Elasticsearch 7.15 query上下文和filter上下文

本文发布于:2024-02-14 07:47:40,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1762763.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:上下文   Elasticsearch   filter   query

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!