Elastic NEST не позволит мне создавать несколько агрегатов

#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 структурирован так странно, ха-ха