【问题标题】:Elastic Search - Rolling Calculations弹性搜索 - 滚动计算
【发布时间】:2014-09-15 02:38:18
【问题描述】:

我有一系列 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. 它只是创建一个 索引超过类型并在每次查询时实际计算总和 跑了吗?
  3. 它是否在后台执行 #2(即预计算) 并且只是更新一些缓存值,所以当查询运行时它有 结果很快?

【问题讨论】:

    标签: elasticsearch


    【解决方案1】:

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

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

    【讨论】:

    • 谢谢。对于 #1,我认为我们可以告诉 Elastic Search 该信息。因此,根据您的回答,我的下一个问题是,为什么这比仅使用 Mongo 更好?
    • 从这个意义上说,我认为它并不比Mongodb“更好”。
    猜你喜欢
    • 2018-03-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-06
    相关资源
    最近更新 更多