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

本文涉及的产品
Elasticsearch Serverless通用抵扣包,测试体验金 200元
简介:

本节书摘来华章计算机《深入理解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提供的不同过滤方式之间的异同。

相关实践学习
以电商场景为例搭建AI语义搜索应用
本实验旨在通过阿里云Elasticsearch结合阿里云搜索开发工作台AI模型服务,构建一个高效、精准的语义搜索系统,模拟电商场景,深入理解AI搜索技术原理并掌握其实现过程。
ElasticSearch 最新快速入门教程
本课程由千锋教育提供。全文搜索的需求非常大。而开源的解决办法Elasricsearch(Elastic)就是一个非常好的工具。目前是全文搜索引擎的首选。本系列教程由浅入深讲解了在CentOS7系统下如何搭建ElasticSearch,如何使用Kibana实现各种方式的搜索并详细分析了搜索的原理,最后讲解了在Java应用中如何集成ElasticSearch并实现搜索。  
相关文章
|
9月前
|
数据采集 JSON 数据挖掘
Elasticsearch 的DSL查询,聚合查询与多维度数据统计
Elasticsearch的DSL查询与聚合查询提供了强大的数据检索和统计分析能力。通过合理构建DSL查询,用户可以高效地搜索数据,并使用聚合查询对数据进行多维度统计分析。在实际应用中,灵活运用这些工具不仅能提高查询效率,还能为数据分析提供深入洞察。理解并掌握这些技术,将显著提升在大数据场景中的分析和处理能力。
444 20
|
存储 JSON 监控
大数据-167 ELK Elasticsearch 详细介绍 特点 分片 查询
大数据-167 ELK Elasticsearch 详细介绍 特点 分片 查询
790 4
|
存储 自然语言处理 关系型数据库
Elasticsearch 查询时 term、match、match_phrase、match_phrase_prefix 的区别
【7月更文挑战第3天】Elasticsearch 查询时 term、match、match_phrase、match_phrase_prefix 的区别
|
JSON 自然语言处理 算法
ElasticSearch基础2——DSL查询文档,黑马旅游项目查询功能
DSL查询文档、RestClient查询文档、全文检索查询、精准查询、复合查询、地理坐标查询、分页、排序、高亮、黑马旅游案例
ElasticSearch基础2——DSL查询文档,黑马旅游项目查询功能
|
自然语言处理 搜索推荐 Java
SpringBoot 搜索引擎 海量数据 Elasticsearch-7 es上手指南 毫秒级查询 包括 版本选型、操作内容、结果截图(一)
SpringBoot 搜索引擎 海量数据 Elasticsearch-7 es上手指南 毫秒级查询 包括 版本选型、操作内容、结果截图
308 0
|
存储 自然语言处理 搜索推荐
SpringBoot 搜索引擎 海量数据 Elasticsearch-7 es上手指南 毫秒级查询 包括 版本选型、操作内容、结果截图(二)
SpringBoot 搜索引擎 海量数据 Elasticsearch-7 es上手指南 毫秒级查询 包括 版本选型、操作内容、结果截图(二)
277 0
|
自然语言处理 Java 关系型数据库
ElasticSearch 实现分词全文检索 - 聚合查询 cardinality
ElasticSearch 实现分词全文检索 - 聚合查询 cardinality
421 1
|
存储 数据库 索引
面试题ES问题之动态映射的定义如何解决
面试题ES问题之动态映射的定义如何解决
152 1
|
自然语言处理 索引
Elasticsearch 常用查询语句大全
【7月更文挑战第8天】Elasticsearch 常用查询语句大全
|
索引
Elasticsearch 精确查询:术语查询、多术语查询、主键查询、范围查询、存在查询、前缀查询、正则查询与通配符查询
Elasticsearch 精确查询:术语查询、多术语查询、主键查询、范围查询、存在查询、前缀查询、正则查询与通配符查询
248 4