0

如何在 ElasticSearch 中执行复杂的计算,该计算需要找到索引中条目的最大值和最小值?

下面的例子很愚蠢,但为了说明它的目的。

给定一个User正在保存到索引的对象:

class User {
   String name
   int age;
}

要求是,对于所有同名的用户,获取最小和最大年龄之间的差异。

例如,给定以下数据集:

Name    Age
Tom     20
Tom     35
Tom     45
Sam     10
Sam     50
Sam     90

计算将产生以下结果:

Tom = (45-20) = 25
Sam = (90-10) = 80

在 ElasticSearch 中计算了值后,它们需要在 Kibana 中可访问。

我是 ElasticSearch 的新手,非常感谢任何代码示例。

4

1 回答 1

0

您可以获取每个用户的最小值和最大值,然后您需要从客户端执行其余操作 -

{
  "aggs": {
    "users": {
      "terms": {
        "field": "Name"
      },
      "aggs": {
        "maxAge": {
          "max": {
            "field": "age"
          }
        },
        "minAge": {
          "min": {
            "field": "age"
          }
        }
      }
    }
  }
}

在这里,您需要使用术语聚合为每个名称创建一个存储桶。对于每个存储桶,您需要使用 max 和 min 聚合来获取最大值和最小值。

休息一下,您需要注意客户端。

于 2015-04-27T15:40:37.020 回答