ElasticSearch中Filter和Query的异同
来源:互联网 发布:2016即时通讯软件排名 编辑:程序博客网 时间:2024/05/22 13:52
查询虽然包含这两种,但是查询在不同的执行环境下,操作还是不一样的。
Query与Filter
查询在Query查询上下文和Filter过滤器上下文中,执行的操作是不一样的:
Query查询上下文:
在查询上下文中,查询会回答这个问题——“这个文档匹不匹配这个查询,它的相关度高么?”
如何验证匹配很好理解,如何计算相关度呢?之前说过,ES中索引的数据都会存储一个_score分值,分值越高就代表越匹配。另外关于某个搜索的分值计算还是很复杂的,因此也需要一定的时间。
查询上下文 是在 使用query进行查询时的执行环境,比如使用search的时候。
Filter过滤器上下文:
在过滤器上下文中,查询会回答这个问题——“这个文档匹不匹配?”
答案很简单,是或者不是。它不会去计算任何分值,也不会关心返回的排序问题,因此效率会高一点。
过滤上下文 是在使用filter参数时候的执行环境,比如在bool查询中使用Must_not或者filter。
另外,经常使用过滤器,ES会自动的缓存过滤器的内容,这对于查询来说,会提高很多性能。
总结
1 查询上下文中,查询操作不仅仅会进行查询,还会计算分值,用于确定相关度;在过滤器上下文中,查询操作仅判断是否满足查询条件
2 过滤器上下文中,查询的结果可以被缓存。
如下例子,查找性别是女,所在的州是PA,过滤条件是年龄是39岁,balance大于等于10000的文档:
{ "query": { "bool": { "must": [ { "match": { "gender": "F" } }, { "match": { "state": "PA" } } ], "filter": [ { "term": { "age": "39" } }, { "range": { "balance": { "gte": "10000" } } } ] } }}
返回结果:
阅读全文
0 0
- ElasticSearch中Filter和Query的异同
- ElasticSearch中Filter和Query的异同
- ElasticSearch的 Query DSL 和 Filter DSL
- ElasticSearch的 Query DSL 和 Filter DSL
- Elasticsearch DSL中Query与Filter的区别
- Elasticsearch DSL中Query与Filter的不同
- Elasticsearch DSL中Query与Filter的不同
- Elasticsearch DSL中Query与Filter的不同
- Elasticsearch的DSL之query and filter
- servlet和filter的异同
- servlet和filter的异同
- elasticsearch的查询器(query)和过滤器(filter)的比较
- ElasticSearch中如何让query should等同于filter should
- Elasticsearch之query与filter
- Elasticsearch的查询器query与过滤器filter的区别
- Solr -- query和filter query
- Elasticsearch 之 query与filter区别
- elasticsearch中如何高效的使用filter
- java遍历Map效率最高的方式
- 生成二维码代码
- 你所不知道的21个云服务器应用实践———云计算综合入门指南
- mybatis+mysql查询大类别下的所有图书(递归)
- 软件测试简括
- ElasticSearch中Filter和Query的异同
- react-native之项目结构分析
- Java中使用OpenSSL生成的RSA公私钥进行数据加解密
- Duplicate entry '...' for key 'PRIMARY';Unable to locate persister:...
- Spring Transaction属性之Propagation
- 客户端负载均衡与服务端负载均衡
- 如何连接oceanbase数据库
- 销售易和纷享销客
- android广播机制的简单阐述