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

时间:2014-07-03 18:18:30

标签: elasticsearch

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

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

2 个答案:

答案 0 :(得分:7)

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

来自文档:

  

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

     

他们不必为每个文件计算相关性_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

答案 1 :(得分:0)