Elastic NEST不允许我创建多个聚合

问题描述

通过使用Kibana,我可以制作一些很好的图形,尝试将其转换为nesT。来自Kibana的JSON请求如下所示:

{
    "aggs": {
        "2": {
            "date_histogram": {
                "field": "@timestamp","fixed_interval": "30m","min_doc_count": 1
            },"aggs": {
                "1": {
                    "cardinality": {
                        "field": "clientip"
                    }
                }
            }
        }
    }

这就是我的nesT的样子:

query.Aggregations(aggs => aggs
    .DateHistogram("total_count",d => d
        .Field(f => f.Timestamp)
        .FixedInterval("30m")
        .MinimumDocumentCount(1)
    )
    .Cardinality("unique_count",c => c
        .Field(f => f.ClientIp)
    )
)

但是,生成的JSON如下所示:

{
    "aggs": {
        "total_count": {
            "date_histogram": {
                "field": "@timestamp","min_doc_count": 1
            }
        },"unique_count": {
            "cardinality": {
                "field": "clientip"
            }
        }
    }

这很有意义,因为那是我在代码中写的。但是,我需要将cardinality添加date_histogram,但是我无法弄清楚。我不能在.Aggregations()添加额外的.DateHistogram(),因为它不存在。

我在做什么错了?

解决方法

这应该有效:

query.Aggregations(aggs => aggs
    .DateHistogram("total_count",d => d
        .Field(f => f.Timestamp)
        .FixedInterval("30m")
        .MinimumDocumentCount(1)
        .Aggregations(childAggs => childAggs
           .Cardinality("unique_count",c => c
             .Field(f => f.ClientIp)
           )
        )
    )
)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...