Query查询器 与 Filter 过滤器
尽管我们之前已经涉及了查询DSL,然而实际上存在两种DSL:查询DSL(query DSL)和过滤DSL(filter DSL)。
过滤器(filter)通常用于过滤文档的范围,比如某个字段是否属于某个类型,或者是属于哪个时间区间
* 创建日期是否在2014-2015年间?
* status字段是否为success?
* lat_lon字段是否在某个坐标的10公里范围内?
查询器(query)的使用方法像极了filter,但query更倾向于更准确的查找。
* 与full text search的匹配度最高
* 正则匹配
* 包含run单词,如果包含这些单词:runs、running、jog、sprint,也被视为包含run单词
* 包含quick、brown、fox。这些词越接近,这份文档的相关性就越高
查询器会计算出每份文档对于某次查询有多相关(relevant),然后分配文档一个相关性分数:_score。而这个分数会被用来对匹配了的文档进行相关性排序。相关性概念十分适合全文搜索(full-text search),这个很难能给出完整、“正确”答案的领域。
query filter在性能上对比:filter是不计算相关性的,同时可以cache。因此,filter速度要快于query。
如果你的查询是范围和类型比较粗大的,用filter;如果是那种精准的,就用query来查询。
个人理解:如果需要全文搜索相关度评分排序的,用query,需要类型过滤,精确匹配,用filter。另外,由于过滤是对检索后的结果进行过滤,所以查询需要尽量使用索引或者关键字段。
相关推荐
本文将详细介绍Elasticsearch接口API的使用,特别是全文检索、查询匹配以及常用的过滤器,以及GET /_search API的各种使用方法。 在Elasticsearch中,查询和过滤上下文是两种不同的操作方式: 1. **查询上下文**:...
使用metod调用及其args / kwargs生成查询/过滤器/聚合对象。 输出dict / json表示形式,将其直接传递给ES。 概要 from elasticsearch import Elasticsearch from elasticquery import ElasticQuery , Filter , ...
Elasticsearch过滤器追加 将其他过滤器追加到过滤器,查询和过滤的查询。 为什么? 该库主要是出于安全原因而存在。 假设您正在接受用户生成的过滤器,但想对输入进行安全调整。 用户可以提交一个任意的过滤器,以...
这里定义了一个名为 `pinyin` 的自定义分词器,它使用标准分词器 (`standard`) 和小写过滤器 (`lowercase`),并添加了 `pinyin` 过滤器。 ### 4. 使用拼音分词器 在创建索引或映射时,可以指定使用这个分词器: `...
2. **过滤器(Filter)**:在分析过程中应用规则,如去除停用词、关键词过滤等。 3. **评分(Score)**:Elasticsearch基于相关性计算的评分机制,影响搜索结果排序。 4. **缓存(Cache)**:利用内存提高搜索速度,如字段...
- **过滤器**:`FilterBuilder`接口与`QueryBuilder`类似,但过滤器不参与评分,仅用于筛选结果。例如,我们可以使用`TermFilterBuilder`、`ExistsFilterBuilder`等。 4. **分组与高亮显示**: - **分组**:...
此外,还可以通过使用过滤器缓存(Filter Caching)和查询缓存(Query Caching)来进一步提升查询效率。 总而言之,ElasticSearch Server一书全面介绍了ElasticSearch的安装、配置、索引管理、数据操作、查询机制及...
### Elasticsearch数据库的下载、配置与使用案例 #### 一、Elasticsearch数据库的下载与安装 **1.1 下载与解压** - **下载Elasticsearch:** - **官方网站下载:** 访问Elasticsearch官方网站...
本篇学习笔记将围绕 Elasticsearch 的基本查询操作展开,包括前置过滤、查询与排序以及统计功能。 #### 二、查询基础 Elasticsearch 提供了多种查询方式,常见的有匹配查询、过滤查询等。其中,过滤查询是一种非常...
- 使用过滤器(Filter)代替查询(Query):过滤器不参与评分,速度更快。 - 尽量避免使用通配符和正则表达式查询,它们可能导致全索引扫描,降低性能。 - 使用`match_phrase`或`match_phrase_prefix`进行短语...
杂项操作支持(Miscellaneous Elasticsearch Operation Support)则可能包含了一些特定功能,如使用FilterBuilder进行过滤操作,以及使用Scan And Scroll处理大量结果集。 文档的附录部分(Appendix)提供了诸如...
Elasticsearch提供了Java REST客户端,使得开发者可以直接在Java应用中与ES服务器进行交互。这个客户端封装了HTTP通信,简化了请求构造和响应解析的过程。 3. **安装与配置**: 在开始编写Java代码前,需要在本地...
SQL中的WHERE子句在Elasticsearch中会被转换为过滤器(Filter)或查询(Query)。过滤器通常更快,因为它不会计算分数,而查询则会。 4. **聚合查询** Elasticsearch的聚合功能强大,可以用于统计、分组和排序等...
在Elasticsearch中,查询是检索数据的核心操作,本笔记主要介绍了多种查询方式,帮助我们更有效地从索引中获取匹配的数据。 1. **全部查询**: 使用`match_all`查询可以返回索引中的所有文档。在示例中,GET请求`...
在 Elasticsearch 中,查询可以分为两种上下文:查询上下文和过滤器上下文。查询上下文用于计算文档的相关性得分,回答问题“此文档与该查询子句的匹配程度如何?”查询子句在查询上下文中计算相关性得分,影响文档...
- **关键词搜索**:在Elasticsearch中,我们可以使用`match`或`query_string`查询来实现关键词搜索。例如,搜索关键词"example",可以写成`"match": { "field": "example" }`或者`"query_string": { "query": ...
同时,提供了过滤器(filter)和查询(query)的概念,使得搜索逻辑更加清晰。 5. **聚合分析**:Elasticsearch 5.1 提供了丰富的聚合功能,如术语聚合(Term Aggregation)、统计聚合(Statistical Aggregation)...
- **查询与过滤**:支持丰富的查询方式,如匹配查询、范围查询、模糊查询等,并能组合使用过滤器。 - **聚合分析**:执行各种聚合操作,用于统计分析和数据挖掘。 - **脚本支持**:在查询和更新中使用脚本,实现动态...