查询和过滤器(queries and filters)
2014-06-04 14:50
302 查看
虽然我们已经了解了Query DSL,事实上DSL有两种表现形式:Query DSL和Filter DSL。查询条目和过滤条目是很相似的,只不过在目的上略有不同。
filter对每个document提出yes或者no的问题,常常作用于包含确切值的field:
1:名为created的创建日期是否在2013到2014之间?
2:名为status的状态是否包括”published“?
3:名为lat_lon是否在距离指定的点的10KM之内?
查询是和过滤是相似的,只不过提出的问题是:查询条件匹配document的层度
典型的query的使用方法是找到document:
1:查询要匹配关键字:full text search
2:包含关键字run,但也可能匹配runs,runing,jog或者spring
3:包口关键字quick,brown和fox——在document中这三个关键字距离越近,那么document和查询条件的关联度就越高
4:被关键字lucene,search或者java标记的document——标签越多且符合这三个的document,关联度就越高。
查询是要计算查询条件和document的关联度的,并且把关联度赋值给_score,这个被用来对结果排序的依据。这个关联度的概念是很适合全文检索的,但是却少产生完全正确的答案。
查询不单找到匹配的document,还要计算每个document的关联度,这通常使得查询要比过滤器显得笨重。并且查询的结果也不能缓存。
幸好有了inverted index,对一些document的简单查询的性能很好甚至在对于百万级的documen优于缓存过滤器。但是,通常情况下,缓存过滤器总是比查询性能要好的。
过滤器的目的就是减少已经被查询检测过的document的数量。
原文:http://www.elasticsearch.org/guide/en/elasticsearch/guide/current/_queries_and_filters.html
filter对每个document提出yes或者no的问题,常常作用于包含确切值的field:
1:名为created的创建日期是否在2013到2014之间?
2:名为status的状态是否包括”published“?
3:名为lat_lon是否在距离指定的点的10KM之内?
查询是和过滤是相似的,只不过提出的问题是:查询条件匹配document的层度
典型的query的使用方法是找到document:
1:查询要匹配关键字:full text search
2:包含关键字run,但也可能匹配runs,runing,jog或者spring
3:包口关键字quick,brown和fox——在document中这三个关键字距离越近,那么document和查询条件的关联度就越高
4:被关键字lucene,search或者java标记的document——标签越多且符合这三个的document,关联度就越高。
查询是要计算查询条件和document的关联度的,并且把关联度赋值给_score,这个被用来对结果排序的依据。这个关联度的概念是很适合全文检索的,但是却少产生完全正确的答案。
性能差异(performance differences)
很多的过滤器的输出——是一个简单的符合过滤器的document列表——能够快速的计算并且缓存在内存中,每个document仅仅使用一个bit。因此缓存过滤可以在随后的请求中有效的重用。查询不单找到匹配的document,还要计算每个document的关联度,这通常使得查询要比过滤器显得笨重。并且查询的结果也不能缓存。
幸好有了inverted index,对一些document的简单查询的性能很好甚至在对于百万级的documen优于缓存过滤器。但是,通常情况下,缓存过滤器总是比查询性能要好的。
过滤器的目的就是减少已经被查询检测过的document的数量。
什么时候该选择哪一个(when to use which)
一般情况下对full text搜索或者任何的条件会影响到关联度的时候使用查询条目,其他情况使用过滤器。原文:http://www.elasticsearch.org/guide/en/elasticsearch/guide/current/_queries_and_filters.html
相关文章推荐
- 一些最重要的查询和过滤(most important queries and filters)
- 意图和意图过滤器Intents and Intent Filters
- 管道与过滤器模式(Pipes-and-Filters)与装饰模式(Decorator)之间的关系
- hdu 3726 Graph and Queries(splay查询第k大,启发式合并,删除操作)
- [翻译]搜索关键字 – 管道与过滤器模式(Pipes-and-Filters)与装饰模式(Decorator)之间的关系
- Hdu 3726 Graph and Queries(删边,查询第k大,修改点值)
- es Queries and filters
- HBase查询(1)---Comparision Filters比较过滤器
- Intents and Intent Filters(Intent和Intent过滤器)
- 查询和修改(Queries and Mutations)
- [Elasticsearch] 过滤查询以及聚合(Filtering Queries and Aggregations) 5
- 意图和意图过滤器Intents and Intent Filters
- Intents and Intent Filters//意图和意图过滤器
- [我给Unity官方视频教程做中文字幕]beginner Graphics – Lessons系列之网格渲染器和过滤器Mesh renderers and filters
- HDU 5412 CRB and Queries && BZOJ 3110: [Zjoi2013]K大数查询 (整体二分+树状数组/线段树)
- es Queries and filters demo
- SpringData JPA @Query分页查询 Cannot use native queries with dynamic sorting and/or pagination in method
- HBase查询(3)---Decorating Filters装饰性过滤器
- [Elasticsearch] 过滤查询以及聚合(Filtering Queries and Aggregations)
- 意图和意图过滤器Intents and Intent Filters