《深入理解Elasticsearch(原书第2版)》一2.4.1 过滤及查询相关性

本文涉及的产品
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
简介:

本节书摘来华章计算机《深入理解Elasticsearch(原书第2版)》一书中的第2章 ,第2.4.1节,[美]拉斐尔·酷奇(Rafal Ku) 马雷克·罗戈任斯基(Marek Rogoziski)著 张世武 余洪淼 商旦 译 更多章节内容可以访问云栖社区“华章计算机”公众号查看。

2.4.1 过滤及查询相关性

普通查询和过滤的第一个差异在于它们对文档打分的影响。让我们举例对比一下查询和过滤的输出。首先执行如下查询:
image
image

这个查询的结果如下:
image

这个查询没有任何特异之处。Elasticsearch将返回所有在title字段中包含“front”的文档。需要指出的是,每个和查询匹配的文档都会被计算得分,其中得分最高的一组文档被作为查询结果返回给用户。在本例中,该查询返回了一篇得分为0.11506981的文档。以上这些就是查询的一般行为。
接着我们来对比一下查询和过滤。在一个同时包含查询和过滤的例子中,我们将加入一段代码片段,限制返回文档只能有一个副本(copies字段取值为1)。不使用过滤的查询方式如下:
image
image

Elasticsearch返回的查询结果和上一个查询非常相似:
image

上面这段查询代码中的bool查询由两个term查询构成,每个结果文档都需要同时匹配这两个term查询。这个查询返回了和上一查询相同的文档,不过文档得分变成了0.98976034。这和我们读完2.1节后的期望一致:每个词项都会影响得分。
接下来我们来看看使用过滤的查询方式,在titile字段匹配“front”的查询,同时针对copies字段进行过滤。
image

现在,我们构造好了一个term查询,同时还添加了一个term过滤器。从下面的返回代码中可以看出,输出的文档和不使用过滤时一样,不过文档得分发生了变化。
image
image

这个文档的得分为0.11506981,这和本节最开始的查询结果一模一样。通过得分对比我们得出结论:过滤不影响文档得分。
 旧版Elasticsearch使用“filter”而不是上述代码中的“post_filter”来标识查询语句中的过滤片段。在1.x版本中,这两种标记方式都可以正常使用,不过请注意,“filter”方式可能将在之后的版本中停用。
一般来说,查询和过滤在工作过程中存在一个主要的差异。过滤的唯一目的是用特定筛选条件来缩小结果范围。而查询不仅缩小结果范围,还会影响文档的得分,这一点在强调文档相关性时非常重要,不过需要付出一定的代价:需要额外的CPU消耗来计算文档得分。当然,这不是查询和过滤的唯一区别。本节剩余部分将着重探讨过滤器的工作原理和Elasticsearch提供的不同过滤方式之间的异同。

相关实践学习
使用阿里云Elasticsearch体验信息检索加速
通过创建登录阿里云Elasticsearch集群,使用DataWorks将MySQL数据同步至Elasticsearch,体验多条件检索效果,简单展示数据同步和信息检索加速的过程和操作。
ElasticSearch 入门精讲
ElasticSearch是一个开源的、基于Lucene的、分布式、高扩展、高实时的搜索与数据分析引擎。根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎,其次是Apache Solr(也是基于Lucene)。 ElasticSearch的实现原理主要分为以下几个步骤: 用户将数据提交到Elastic Search 数据库中 通过分词控制器去将对应的语句分词,将其权重和分词结果一并存入数据 当用户搜索数据时候,再根据权重将结果排名、打分 将返回结果呈现给用户 Elasticsearch可以用于搜索各种文档。它提供可扩展的搜索,具有接近实时的搜索,并支持多租户。
相关文章
|
2月前
|
存储 固态存储 Java
Elasticsearch中查询性能优化
Elasticsearch中查询性能优化
189 0
|
3月前
Elasticsearch之RestClient查询文档
Elasticsearch之RestClient查询文档
139 1
|
5月前
|
存储 人工智能 自然语言处理
ElasticSearch实战指南必知必会:安装分词器、高级查询、打分机制
ElasticSearch实战指南必知必会:安装分词器、高级查询、打分机制
ElasticSearch实战指南必知必会:安装分词器、高级查询、打分机制
|
4月前
|
JSON 自然语言处理 数据库
数据库-ElasticSearch入门(索引、文档、查询)
数据库-ElasticSearch入门(索引、文档、查询)
288 0
|
3月前
|
缓存 JSON API
Elasticsearch-05Elasticsearch之查询与过滤
Elasticsearch-05Elasticsearch之查询与过滤
164 0
|
5月前
|
JSON 自然语言处理 数据格式
分布式系列教程(33) -ElasticSearch DSL语言查询与过滤
分布式系列教程(33) -ElasticSearch DSL语言查询与过滤
151 0
|
5月前
分布式系列教程(32) -ElasticSearch条件查询
分布式系列教程(32) -ElasticSearch条件查询
173 0
|
2月前
|
缓存 算法 索引
【Elasticsearch专栏 07】深入探索:Elasticsearch的倒排索引如何进行模糊查询和通配符查询
Elasticsearch的倒排索引支持模糊查询和通配符查询,通过特定的算法和数据结构,能够实现对关键词的模糊匹配和通配符匹配。这两种查询类型提供了更灵活的搜索功能,但可能影响查询性能,需结合优化策略使用。
|
2月前
|
缓存 自然语言处理 数据挖掘
一篇文章让你学会Elasticsearch中的查询
一篇文章让你学会Elasticsearch中的查询
137310 118
|
2月前
|
测试技术 定位技术 API
万字长文:一文彻底搞懂Elasticsearch中Geo数据类型查询、聚合、排序
万字长文:一文彻底搞懂Elasticsearch中Geo数据类型查询、聚合、排序
94611 140

热门文章

最新文章