`

elasticsearch的查询器query与过滤器filter

 
阅读更多

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

    本文将详细介绍Elasticsearch接口API的使用,特别是全文检索、查询匹配以及常用的过滤器,以及GET /_search API的各种使用方法。 在Elasticsearch中,查询和过滤上下文是两种不同的操作方式: 1. **查询上下文**:...

    ElasticQuery:一个用于Elasticsearch的简单(Python)查询构建器

    使用metod调用及其args / kwargs生成查询/过滤器/聚合对象。 输出dict / json表示形式,将其直接传递给ES。 概要 from elasticsearch import Elasticsearch from elasticquery import ElasticQuery , Filter , ...

    elasticsearch-filter-append

    Elasticsearch过滤器追加 将其他过滤器追加到过滤器,查询和过滤的查询。 为什么? 该库主要是出于安全原因而存在。 假设您正在接受用户生成的过滤器,但想对输入进行安全调整。 用户可以提交一个任意的过滤器,以...

    elasticsearch拼音分词器

    这里定义了一个名为 `pinyin` 的自定义分词器,它使用标准分词器 (`standard`) 和小写过滤器 (`lowercase`),并添加了 `pinyin` 过滤器。 ### 4. 使用拼音分词器 在创建索引或映射时,可以指定使用这个分词器: `...

    Elasticsearch权威指南(中文).pdf

    2. **过滤器(Filter)**:在分析过程中应用规则,如去除停用词、关键词过滤等。 3. **评分(Score)**:Elasticsearch基于相关性计算的评分机制,影响搜索结果排序。 4. **缓存(Cache)**:利用内存提高搜索速度,如字段...

    elasticsearch java操作的api实例

    - **过滤器**:`FilterBuilder`接口与`QueryBuilder`类似,但过滤器不参与评分,仅用于筛选结果。例如,我们可以使用`TermFilterBuilder`、`ExistsFilterBuilder`等。 4. **分组与高亮显示**: - **分组**:...

    ElasticSearch Server

    此外,还可以通过使用过滤器缓存(Filter Caching)和查询缓存(Query Caching)来进一步提升查询效率。 总而言之,ElasticSearch Server一书全面介绍了ElasticSearch的安装、配置、索引管理、数据操作、查询机制及...

    elasticsearch数据库下载、配置、使用案例PPT模板

    ### Elasticsearch数据库的下载、配置与使用案例 #### 一、Elasticsearch数据库的下载与安装 **1.1 下载与解压** - **下载Elasticsearch:** - **官方网站下载:** 访问Elasticsearch官方网站...

    Elastic Search学习笔记

    本篇学习笔记将围绕 Elasticsearch 的基本查询操作展开,包括前置过滤、查询与排序以及统计功能。 #### 二、查询基础 Elasticsearch 提供了多种查询方式,常见的有匹配查询、过滤查询等。其中,过滤查询是一种非常...

    G04-杨樾人-基于Elasticsearch集群的数据查询优化1

    - 使用过滤器(Filter)代替查询(Query):过滤器不参与评分,速度更快。 - 尽量避免使用通配符和正则表达式查询,它们可能导致全索引扫描,降低性能。 - 使用`match_phrase`或`match_phrase_prefix`进行短语...

    spring-data-elasticsearch英文版

    杂项操作支持(Miscellaneous Elasticsearch Operation Support)则可能包含了一些特定功能,如使用FilterBuilder进行过滤操作,以及使用Scan And Scroll处理大量结果集。 文档的附录部分(Appendix)提供了诸如...

    elasticsearch5.x的java实现搜索

    Elasticsearch提供了Java REST客户端,使得开发者可以直接在Java应用中与ES服务器进行交互。这个客户端封装了HTTP通信,简化了请求构造和响应解析的过程。 3. **安装与配置**: 在开始编写Java代码前,需要在本地...

    elasticsearch-sql插件

    SQL中的WHERE子句在Elasticsearch中会被转换为过滤器(Filter)或查询(Query)。过滤器通常更快,因为它不会计算分数,而查询则会。 4. **聚合查询** Elasticsearch的聚合功能强大,可以用于统计、分组和排序等...

    elasticsearch笔记1

    在Elasticsearch中,查询是检索数据的核心操作,本笔记主要介绍了多种查询方式,帮助我们更有效地从索引中获取匹配的数据。 1. **全部查询**: 使用`match_all`查询可以返回索引中的所有文档。在示例中,GET请求`...

    查询DSL-复合查询.docx

    在 Elasticsearch 中,查询可以分为两种上下文:查询上下文和过滤器上下文。查询上下文用于计算文档的相关性得分,回答问题“此文档与该查询子句的匹配程度如何?”查询子句在查询上下文中计算相关性得分,影响文档...

    Elasticsearch 案例

    - **关键词搜索**:在Elasticsearch中,我们可以使用`match`或`query_string`查询来实现关键词搜索。例如,搜索关键词"example",可以写成`"match": { "field": "example" }`或者`"query_string": { "query": ...

    elasticsearch5.1

    同时,提供了过滤器(filter)和查询(query)的概念,使得搜索逻辑更加清晰。 5. **聚合分析**:Elasticsearch 5.1 提供了丰富的聚合功能,如术语聚合(Term Aggregation)、统计聚合(Statistical Aggregation)...

    springboot-elasticsearch.zip

    - **查询与过滤**:支持丰富的查询方式,如匹配查询、范围查询、模糊查询等,并能组合使用过滤器。 - **聚合分析**:执行各种聚合操作,用于统计分析和数据挖掘。 - **脚本支持**:在查询和更新中使用脚本,实现动态...

Global site tag (gtag.js) - Google Analytics