Elastic NEST 不允许我创建多个聚合
Elastic NEST won't allow me to create multiple aggregations
通过使用 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",
"fixed_interval": "30m",
"min_doc_count": 1
}
},
"unique_count": {
"cardinality": {
"field": "clientip"
}
}
}
这很有道理,因为那是我在代码中写的。但是,我需要将 cardinality
添加到 date_histogram
,但我无法弄清楚。我无法向 .DateHistogram()
添加额外的 .Aggregations()
,因为它不存在。
我做错了什么?
这应该有效:
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)
)
)
)
)
通过使用 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",
"fixed_interval": "30m",
"min_doc_count": 1
}
},
"unique_count": {
"cardinality": {
"field": "clientip"
}
}
}
这很有道理,因为那是我在代码中写的。但是,我需要将 cardinality
添加到 date_histogram
,但我无法弄清楚。我无法向 .DateHistogram()
添加额外的 .Aggregations()
,因为它不存在。
我做错了什么?
这应该有效:
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)
)
)
)
)