Elasticsearch范围查询和范围过滤器之间的区别

Sam*_*rma 5 elasticsearch

我想在日期范围内查询elasticsearch文档.我现在有两种选择,对我来说都很好.测试了他们两个.1.范围查询2.范围过滤

由于我现在有一个小数据集,我无法测试它们的性能.这两者有什么区别?哪一个会导致更快的文件检索和更快的响应?

Joh*_*one 8

查询和过滤器之间的主要区别与评分有关.查询返回具有每个文档的相对排名分数的文档.过滤器没有.由于两个原因,这种差异允许过滤器更快.首先,它不会产生计算每个文档的分数的成本.其次,它可以缓存结果,因为它不必随时处理分数中可能的变化 - 它只是一个布尔值,文档是否匹配?

从文档:

过滤器通常比查询更快,因为:

他们不必为每个文档计算相关性_score - 答案只是一个布尔"是,文档与过滤器匹配"或"否,文档与过滤器不匹配".大多数过滤器的结果可以缓存在内存中,从而使后续执行更快.

实际上,问题是您是否以任何方式使用相关性得分?如果没有,过滤器是可行的方法.如果你这样做,过滤器仍然可能有用,但应该在有意义的地方使用.例如,如果您的文档中有一个语言字段(例如语言:"EN"作为示例),并希望按语言查询相关性分数,则可以将文本搜索的查询与过滤器结合使用.语言.过滤器将以英语缓存所有文档的文档ID,然后可以将查询应用于该子集.

我简化了一点,但这是基础知识.阅读这个的好地方:

http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/query-dsl-filtered-query.html

http://www.elasticsearch.org/guide/en/elasticsearch/reference/0.90/query-dsl-filtered-query.html

http://exploringelasticsearch.com/searching_data.html

http://elasticsearch-users.115913.n3.nabble.com/Filters-vs-Queries-td3219558.html