ElasticSearch实战之Filter Query过滤查询(六)
2019-04-12 10:25
507 查看
版权声明:本文为百知JAVAEE小陈原创文章,未经博主允许不得转载!!! https://blog.csdn.net/cx521600/article/details/89226946
Filter Query(过滤查询)
1.1 过滤查询
其实准确来说,ES中的查询操作分为2种:
查询(query)和过滤(filter)。查询即是之前提到的query查询,它 (查询)默认会计算每个返回文档的得分,然后根据得分排序。而过滤(filter)只会筛选出符合的文档,并不计算 得分,且它可以缓存文档 。所以,单从性能考虑,过滤比查询更快。换句话说,
过滤适合在大范围筛选数据,而查询则适合精确匹配数据。一般应用时, 应先使用过滤操作过滤数据, 然后使用查询匹配数据。
1.2 过滤语法
GET /ems/emp/_search { "query": { "bool": { "must": [ {"match_all": {}} ], "filter": { "range": { "age": { "gte": 10 } } } } } }
NOTE:
在执行filter和query时,先执行filter在执行queryNOTE:
Elasticsearch会自动缓存经常使用的过滤器,以加快性能。
1.3 常见的过滤器类型
term 、 terms Filter
GET /ems/emp/_search # 使用term过滤 { "query": { "bool": { "must": [ {"term": { "name": { "value": "小黑" } }} ], "filter": { "term": { "content":"框架" } } } } } GET /dangdang/book/_search #使用terms过滤 { "query": { "bool": { "must": [ {"term": { "name": { "value": "中国" } }} ], "filter": { "terms": { "content":[ "科技", "声音" ] } } } } }
ranage filter范围过滤器
GET /ems/emp/_search { "query": { "bool": { "must": [ {"term": { "name": { "value": "中国" } }} ], "filter": { "range": { "age": { "gte": 7, "lte": 20 } } } } } }
exists filter过滤存在指定字段,获取字段不为空的索引记录使用
GET /ems/emp/_search { "query": { "bool": { "must": [ {"term": { "name": { "value": "中国" } }} ], "filter": { "exists": { "field":"aaa" } } } } }
ids filter过滤含有指定字段的索引记录
GET /ems/emp/_search { "query": { "bool": { "must": [ {"term": { "name": { "value": "中国" } }} ], "filter": { "ids": { "values": ["1","2","3"] } } } } }
NOTE: 更多内容请参考Elas 1b5d8 tic Search官方文档:https://www.elastic.co/
相关文章推荐
- Elasticsearch 2.3 查询与过滤(query and filter)
- elasticsearch 查询与过滤:query and filter
- 结构化查询(Query DSL)和结构化过滤(Filter DSL)
- Elasticsearch中的两种查询操作query和filter
- EntityFramework Core 2.0全局过滤(HasQueryFilter)
- django ORM model filter 条件过滤,及多表连接查询、反向查询,某字段的distinct
- Elasticsearch笔记-过滤查询
- Elasticsearch的DSL之query and filter
- XsqlFilterResult----动态生成sql语句的类,过滤一些为空的查询条件 .
- XsqlFilterResult----动态生成sql语句的类,过滤一些为空的查询条件
- WSS3.0开发-过滤列表内容(2)--一个增强的列表元数据查询webpart(SmartQueryWebPart)
- elasticsearch has_parent和查询条件联合过滤数据
- 让Elasticsearch飞起来!百亿级实时查询优化实战 - 大数据
- django ORM model filter 条件过滤,及多表连接查询、反向查询,某字段的distinct
- 如何用filter过滤出query的空字段
- WSS3.0开发-过滤列表内容(2)--一个增强的列表元数据查询webpart(SmartQueryWebPart)
- ElasticSearch38:初识搜索引擎_上机动手实战常用的各种query搜索语法
- 【转】elasticsearch的查询器query与过滤器filter的区别
- 过滤查询filter angularjs
- ElasticSearch 常用的查询过滤语句