弹性搜索 - 滚动计算

时间:2014-09-11 16:28:03

标签: elasticsearch

我有一系列JSON文档,例如{"type":"A", "value": 2}, {"type":"B"," value":3}, and {"type":"C","value":7},我将其提供给弹性搜索。

假设我想进行一次查询以使用"type": "A"

平均所有文档

弹性搜索如何计算计数与使用Mongo的方式之间有什么区别?

弹性搜索:

  1. 自动为所有类型和创建“滚动计数” 将“typeA_sum”,“typeA_count”“typeA_avg”之类的内容增加为新内容 数据被输入?如果这样那将是甜蜜的,因为它不是 实际上不得不计算任何东西。
  2. 它只是创造一个 index over type并实际计算每次查询的总和 跑了?
  3. 它在后台做#2(即预先计算) 并且只是更新一些缓存值,所以当查询运行时它有 结果很快?

1 个答案:

答案 0 :(得分:1)

它最接近您的#2,但结果会被缓存,因此如果结果在后续查询中非常有用,那么结果很有用。 Elasticsearch没有办法事先知道你要运行什么查询,所以#1是不可能的,#3会浪费。

但是,对于您的示例用例,您可能不需要两个查询,一个就足够了。例如,参见将返回count,min,max,average和sum的stats aggregation。将其与terms aggregation(可能还有missing aggregation)相结合,对type字段上的文档进行分组,您就可以获得计数和平均值(以及最小值,最大值,总和)单个查询分别用于所有类型。