elasticsearch dsl python агрегация buckets_path не существует для агрегации - PullRequest
0 голосов
/ 12 июля 2020

У меня есть базовый c запрос агрегации, который не работает с этой ошибкой

elasticsearch.exceptions.RequestError: RequestError(400, 'search_phase_execution_exception', 'buckets_path aggregation does not exist for aggregation [TPS_max]: TPS_temp>TPS')

Запрос агрегации - это

                body = '{   
                "size":0,
                  "query": {
                    "bool": {   
                      "must":[ {"range": {"@timestamp":{"gt":"now-10m","lte":"now"}}},
                               {"query_string":{"query":"host.keyword:%s"}}]
                    }
                  },
                "aggs":{
                  "TPS_temp": {
                    "date_histogram":{ 
                      "field":"@timestamp","interval":"1s","min_doc_count":1},
                "aggs":{
                  "TPS":{
                    "value_count":{ 
                      "field":"@timestamp"}
                      }
                    }
                },
                "TPS_max":{ 
                  "stats_bucket":{
                    "buckets_path":"TPS_temp>TPS"}
                    }
                  }
                }'

И мой код - вот что я Я делаю не так?

a = A('date_histogram', field='@timestamp', interval='1s', min_doc_count=1)
b = A('value_count', field='@timestamp')
c = A('stats_bucket', buckets_path='TPS_temp>TPS')

s = Search(using=es, index=_index) \
    .filter('range', **{ '@timestamp': { 'gt':'now-1m', 'lte':'now' }} ) \
    .query('match', host=host)

s = s[:0]

s.aggs.bucket('TPS_temp',a) \
    .bucket('TPS',b) \
    .pipeline('TPS_max', c) \

...