Отфильтровать поля метаданных и только поля источника возврата в elasticsearch

Есть ли способ сказать elasticsearch не возвращать метаданные? В настоящее время я могу выбрать, какие поля я хочу вернуть в источнике. Но мне нужны только поля в источнике. Я бы предпочел не возвращать метаданные, поскольку мне это не нужно, и это избавит вас от ненужного анализа и транспорта и т.д.

Я нашел Elasticsearch - как вернуть только данные, а не метаинформацию? старый вопрос, когда кто-то прокомментировал, что тогда невозможно было это сделать. Хотите знать, добавлена ​​или не добавлена ​​эта функциональность?

Ответ 1

response_filtering

Все API-интерфейсы REST принимают параметр filter_path, который можно использовать для уменьшите ответ, возвращенный elasticsearch. Этот параметр принимает список разделенных запятыми фильтров, выраженных с помощью точечной нотации:

curl -XGET 'localhost:9200/_search?pretty&filter_path=took,hits.hits._id,hits.hits._score'
{
  "took" : 3,
  "hits" : {
    "hits" : [
      {
        "_id" : "3640",
        "_score" : 1.0
      },
      {
        "_id" : "3642",
        "_score" : 1.0
      }
    ]
  }
}

В python

def get_all( connection, index_name, type_name ):

    query = {
        "match_all":{}
    }

    result = connection.search( index_name, type_name,
             {"query": query},
             filter_path= ["took", "hits.hits._id", "hits.hits.score"])

    return result

Если вы хотите фильтровать поля _source, вам следует рассмотреть возможность объединения уже существующих _source (подробнее см. Get API) с параметром filter_path следующим образом:

curl -XGET 'localhost:9200/_search?pretty&filter_path=hits.hits._source&_source=title'
{
  "hits" : {
    "hits" : [ {
      "_source":{"title":"Book #2"}
    }, {
      "_source":{"title":"Book #1"}
    }, {
      "_source":{"title":"Book #3"}
    } ]
  }
}

Ответ 2

Это не так сложно, если мы это знаем :)

http://localhost:9200/***{index_name}***/***{type}***/_search?pretty&filter_path=took,hits.hits._id,hits.hits._score,**hits.hits._source**

Ответ 4

filter_path (фильтрация ответов) не влияет на версию 1.5 elasticsearch.

Если вариант не имел другого имени или был перемещен в документации, он был впервые добавлен в версию 1.6.