首页 > 解决方案 > Elasticsearch:按ID选择多个不同的字段分组

问题描述

我有以下格式的文档的 ES 索引,这些文档是使用 Fluentd 解析器从日志中解析出来的,并在 ES 中建立索引。记录格式:

{“id”:“id1”,“field1”:“f1_val”,“消息”:“XXXX”,“时间”:“XXXX”}

{“id”:“id1”,“field2”:“f2_val”,“消息”:“XXXX”,“时间”:“XXXX”}

{“id”:“id1”,“field3”:“f3_val”,“field4”:“f4_val”,“消息”:“XXXX”,“时间”:“XXXX”}

我想按 id 字段分组并将字段分组在一起,以便我可以将数据可视化为 Kibana 仪表板中的表格,如下所示:

{“id”:“id1”,“field1”:“f1_val”,“field2”:“f2_val”,“field3”:“f3_val”,“field4”:“f4_val”}

在基巴纳:

    ID 字段 1 字段 2 字段 3 字段 4
    id1 f1_val f2_val f3_val f4_val       

如何按文档对 id 进行分组并在 Elasticsearch 中选择不同的字段值。谢谢!

标签: elasticsearchkibanaelastic-stack

解决方案


{
    "size": 0,
    "aggs": {
        "id_agg": {
            "terms": {
                "field": "id.keyword"
            },
            "aggs": {
                "by_field1": {
                    "terms": {
                        "field": "field1.keyword"
                    }
                },
               "by_field2": {
                    "terms": {
                        "field": "field2.keyword"
                    }
                },
               "by_field3": {
                    "terms": {
                        "field": "field3.keyword"
                    }
                }
            }
        }
    }
}

推荐阅读