当前位置: 首页 > 面试题库 >

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

巫马磊
2023-03-14
问题内容

我想查询日期范围内的elasticsearch文档。我现在有两个选择,两个都适合我。已经测试了他们两个。1.范围查询2.范围过滤器

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


问题答案:

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

从文档中:

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

他们不必为每个文档计算相关性_score,答案只是一个布尔值:“是,文档与过滤条件匹配”或“否,文档与过滤条件不匹配”。大多数过滤器的结果都可以缓存在内存中,从而加快后续执行速度。

实际上,问题是您是否以任何方式使用相关性得分?如果没有,那么过滤器是必经之路。如果这样做,过滤器可能仍然有用,但应在有意义的地方使用。例如,如果您的文档中有一个语言字段(例如,语言:“
EN”),并且想通过语言和相关性得分进行查询,则可以将用于文本搜索的查询与用于语言。筛选器将缓存所有英文文档的文档ID,然后将查询应用于该子集。

我有点简化了,但这是基础。阅读此内容的好地方:

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

http://www.elasticsearch.org/guide/zh-CN/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文档。我现在有两个选择,都很适合我。我已经测试了他们两个。1.范围查询2。距离滤波器 因为我现在有一个小数据集,所以无法测试它们的性能。这两者有什么区别?哪一种方法可以更快地检索文档和响应?

  • 问题内容: 我设置了一个范围滑块,范围为0-2hr,时间以分钟为单位计算,然后像这样转换为hh:mm:10min,20min,1hr 20min,2hr。 但是现在我正在尝试使用范围滑块指定的范围来过滤一堆项目,而我很难做到这一点。 这是我所做的http://cdpn.io/LDusa 我正在使用http://danielcrisp.github.io/angular- rangeslider/d

  • 我正在努力为弹性搜索制定正确的API搜索调用,这将要求在过去1小时内获得我想要的ipv4address。 第一次尝试: {“error”:{“root\u cause”:[{“type”:“parsing\u exception”,“reason”:“未知键,用于[范围]中的START\u对象。”,“line”:10,“col”:12}],“type”:“parsing\u exception”,

  • 可以对模型的查询和写入操作进行封装,例如: <?php namespace app\index\model; use think\Model; class User extends Model { public function scopeThinkphp($query) { $query->where('name','thinkphp')->field('i

  • 问题内容: 我正在尝试获取IP范围查询以处理一组文档,但是没有任何结果。 映射(我已经尝试了和): 数据看起来像这样(许多实例的值都不同) 现在,我去看了官方的ES文档,但是没有IP范围示例,但是我在Git上找到了一个不起作用的示例。它看起来如下: 当我用手指指住字段和地址时,上面的方法引发了一些令人鼓舞的解析错误,但最终没有返回结果。 我还尝试了标准范围语法: 这也没有返回结果。如何查询一系列I

  • 我对mongodb有意见。有人能解释一下为什么这样做(给出了一些结果): 这不起作用(返回零): 非常感谢。