Используя API поиска, есть ли способ исключить ВСЕ поля метаданных и вернуть только содержимое внутри _source? - PullRequest
0 голосов
/ 08 июля 2019

Я использую Python и Elasticsearch для обработки больших объемов данных.Используя API поиска, ответ будет содержать запрошенные документы в списке «совпадений»:

{
  ...
  "hits" : {
    ...
    "hits" : [
      { "_source": {...} },
      { "_source": {...} },
      { "_source": {...} }
    ]
  ...
}

Однако каждый документ встроен в поле _source, а не является необработанным документом, который я желаю (и ожидается) Elasticsearch дал бы мне.Чтобы эта информация была полезной для меня, мне нужно извлечь каждый документ из каждого поля hit.source в новый список, подобный следующему:

hits = es_response.get("hits").get("hits")
    items = []
    for hit in hits:
        items.append(hit.get("_source"))
    return {
        "items": items
    }

Оптимально, я бы предпочел не извлекать каждый из них.документ из ответа в список.Есть ли способ настроить Elasticsearch для ответа с данными документа, НЕ вложенными в _source?Если нет, то является ли мое решение лучшим способом обойти это?Я думал об использовании генераторов Python, но мне нужно посмотреть, подходят ли они мне лучше (я думаю, они могут быть медленнее, но используют меньше памяти).

Примечание: я знаю о filter_path * Elasticsearch1010 * параметр, который позволяет вам ТОЛЬКО вернуть поле _source (в приведенном выше примере ответа предполагается использование этой функции), но каждый документ по-прежнему встроен в собственное поле _source и его необходимо извлечь на верхний уровень.Поэтому вопрос не соответствует ранее заданным вопросам по этой теме.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...