在 ElasticSearch 中对一组数据执行复杂的计算



如何在 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的新手,非常感谢任何代码示例。

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

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

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

休息您需要在客户端照顾。

相关内容

最新更新