Elasti c Поиск агрегирования выборки НЕИЗВЕСТНЫЙ КЛЮЧ - PullRequest
1 голос
/ 17 июня 2020

В настоящее время работает с Kibana с более чем 6 миллиардами документов и пытается получить выборку на основе «индекса», который соответствует конкретному дню сбора выборки.

from elasticsearch import Elasticsearch
es = Elasticsearch(['https://user:secret@localhost:xxx'])

Использование кода ниже для запроса:

res = es.search(body=body1)
print(f"Got {res['hits']['total']} Hits:")

Когда я использую тело ниже, я получаю все 6 миллиардов документов:

body1 = {
            "query": {"match_all": {}}
        }

Однако, когда я настраиваю конвейер агрегации, я получаю сообщение об ошибке RequestError(400, 'parsing exception', 'Unknown key for a START_OBJECT in [my_agg].')

body0 = {
            "query": {"match_all": {}},
            "size": 0,
            "aggs": {
                "my_unbiased_sample": {
                    "diversified_sampler": {
                        "max_docs_per_value" : 3, 
                        "field" : "_index"
                    }
                }
            }, "my_agg": {
                "terms": {
                    "field": "_index"
                }
            }
}

Я считаю, что моя проблема связана со вторым агрегатором, а не с первым разнообразным семплером. Мне просто нужен результат от разнообразного сэмплера, но я вынужден иметь второй агрегатор.

1 Ответ

1 голос
/ 17 июня 2020

Вы были почти у цели - просто нужно исправить вложенность:

{
  "query": {
    "match_all": {}
  },
  "size": 0,
  "aggs": {
    "my_unbiased_sample": {
      "diversified_sampler": {
        "max_docs_per_value": 3,
        "field": "_index"
      },
      "aggs": {
        "my_agg": {
          "terms": {
            "field": "_index"
          }
        }
      }
    }
  }
}
...