我想查询日期范围内的elasticsearch文档。我现在有两个选择,两个都适合我。已经测试了他们两个。
1.范围查询
2.范围过滤器
由于目前我的数据集很小,因此无法测试它们两者的性能。两者有什么区别?哪个会导致更快地检索文档和更快地响应?
最佳答案
查询和过滤器之间的主要区别在于评分。查询将返回每个文档具有相对排名得分的文档。过滤器没有。这种差异可以使过滤器更快,这有两个原因。首先,它不会产生为每个文档计算分数的成本。其次,它可以缓存结果,因为它不必时不时处理分数的变化-它只是一个 bool 值,文档是否匹配?
从文档中:
实际上,问题是您是否以任何方式使用相关性得分?如果没有,那么过滤器是必经之路。如果这样做,过滤器仍然可能有用,但应在有意义的地方使用。例如,如果您的文档中有一个语言字段(例如,语言:“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
关于elasticsearch - Elasticsearch范围查询和范围过滤器之间的区别,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24560746/