#c# #elasticsearch #nest
#c# #elasticsearch #гнездо
Вопрос:
Используя Kibana, я смог создать несколько хороших графиков, которые пытаюсь преобразовать в NEST. Запрос JSON от Kibana выглядит следующим образом:
{
"aggs": {
"2": {
"date_histogram": {
"field": "@timestamp",
"fixed_interval": "30m",
"min_doc_count": 1
},
"aggs": {
"1": {
"cardinality": {
"field": "clientip"
}
}
}
}
}
И вот как выглядит мое гнездо:
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
, но я не могу понять это. Я не могу добавить дополнительный .Aggregations()
к .DateHistogram()
, потому что он не существует.
Что я здесь делаю не так?
Ответ №1:
Это должно сработать:
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)
)
)
)
)
Комментарии:
1. Ах, конечно.. Спасибо! Этот JSON структурирован так странно, ха-ха