弹性搜索-滚动计算



我有一系列类似{"type":"A", "value": 2}, {"type":"B"," value":3}, and {"type":"C","value":7}的JSON文档,并将其输入到弹性搜索中。

假设我想做一个查询,用"type": "A" 对所有文档进行平均值

弹性搜索计算计数的方式与Mongo的计算方式有什么区别?

是弹性搜索:

  1. 自动为所有这些类型创建"滚动计数"将"typeA_sum"、"typeA_count"one_answers"typeA_avg"之类的内容递增为新值数据输入了吗?如果是这样,那就太好了,因为那就不是了实际上必须计算任何东西
  2. 它只是创建一个对类型进行索引,并在每次查询时实际计算总和是跑步吗
  3. 它是否在后台执行#2(即预先计算)并且只更新一些缓存值,以便在查询运行时具有结果很快

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

然而,对于您的示例用例,您可能不需要两个查询,一个就足够了。例如,请参阅将返回count、min、max、average和sum的统计数据聚合。将其与术语聚合(可能还有缺失的聚合)结合起来,对type字段上的文档进行分组,您将通过单个查询分别获得所有类型的count和average(以及min、max、sum)。

最新更新