elasticsearch Elasticsearch/Kibana中两个聚合列中的计算列?,elasticsearch,kibana,elasticsearch,Kibana" /> elasticsearch Elasticsearch/Kibana中两个聚合列中的计算列?,elasticsearch,kibana,elasticsearch,Kibana" />

elasticsearch Elasticsearch/Kibana中两个聚合列中的计算列?

elasticsearch Elasticsearch/Kibana中两个聚合列中的计算列?,elasticsearch,kibana,elasticsearch,Kibana,假设我有一个简单的聚合,如下所示: | Item | Views | Clicks | +------+-------+--------+ | B | 123 | 34 | | A | 234 | 12 | | C | 56 | 2 | 是否可以生成一个额外的列作为视图和列的计算结果?例如: | Item | Views | Clicks | Ratio | +------+-------+--------+-------+ | B

假设我有一个简单的聚合,如下所示:

| Item | Views | Clicks |
+------+-------+--------+
| B    | 123   | 34     |
| A    | 234   | 12     |
| C    | 56    | 2      |
是否可以生成一个额外的列作为视图和列的计算结果?例如:

| Item | Views | Clicks | Ratio |
+------+-------+--------+-------+
| B    | 123   | 34     | 0.28  |
| A    | 234   | 12     | 0.05  |
| C    | 56    | 2      | 0.03  |
能够在这个额外的列上进行排序也是很理想的


有没有办法通过Elasticsearch(和Kibana)实现这种聚合?

您可以使用支持脚本的管道聚合。缺点是必须启用内联脚本或将脚本放入文件中。要启用对内联脚本的支持,请将其添加到yaml中

script.inline: on
下面是一个例子:

POST /items/item/_bulk
{ "index": { "_id": "1" }}
{"name": "A","views": 2,"clicks": 3}
{ "index": { "_id": "2" }}
{"name": "A","views": 1,"clicks": 9}
{ "index": { "_id": "3" }}
{"name": "B","views": 5,"clicks": 15}
{ "index": { "_id": "4" }}
{"name": "C","views": 1,"clicks": 1}
{ "index": { "_id": "5" }}
{"name": "A","views": 3,"clicks": 23}

GET /items/item/_search
{
  "size": 0, 
  "aggs": {
    "byName": {
      "terms": {
        "field": "name",
        "size": 10
      },
      "aggs": {
        "countClicks": {
          "sum": {
            "field": "clicks"
          }
        },
        "countViews": {
          "sum": {
            "field": "views"
          }
        },
        "computeRatio": {
          "bucket_script": {
            "buckets_path": {
              "the_clicks": "countClicks",
              "the_views": "countViews"
            },
            "script": "the_clicks / the_views"
          }
        }
      }
    }
  }
}

您可以直接在Kibana中创建脚本化字段,这将为您提供所需的结果

要在Kibana中创建脚本字段,请执行以下步骤:

  • 在Kibana中,单击设置选项卡,然后单击索引模式

  • 您应该看到两个选项卡“字段”和“脚本字段”

  • 单击“脚本字段”选项卡。然后“添加脚本化字段”

  • 在脚本字段中输入“名称”作为比率,然后输入以下内容:-

    文档['clicks'].value/doc['views'].value

  • 单击底部的“创建字段”。现在,您的脚本字段将被添加&可以从“发现”页面查看


谢谢!我不知道bucket脚本聚合管道。