Есть ли способ исключить поле в запросе Elasticsearch

Я знаю, что использовать настройки полей для включения только полей, которые я хочу в поиске http://www.elasticsearch.org/guide/reference/api/search/fields/

... но мне было интересно, могу ли я сделать обратное... каким-то образом укажите одно или два поля, которые я не хочу включать в результаты запроса (например, вложение). Мне просто кажется, что нужно печатать все поля, которые я хочу минус один или два, когда я могу просто указать поля для исключения

Ответ 1

Вы видели документацию для "частичного" на той же странице, которую вы связали в своем вопросе? Это позволяет вам делать то, что вы хотите, хотя и на полях "_source", которые, как я полагаю. См. http://www.elasticsearch.org/guide/reference/api/search/fields/

При загрузке данных из полей _source, partial можно использовать подстановочные знаки для контроля того, какая часть _source будет загружена на основе include и exclude.

Оба include и exclude поддерживают несколько шаблонов:

{
    "query" : {
        "match_all" : {}
    },
    "partial_fields" : {
        "partial1" : {
            "include" : ["obj1.obj2.*", "obj1.obj4.*"],
            "exclude" : "obj1.obj3.*"
        }
    }
}

Ответ 2

Вы можете использовать фильтрацию источника (протестировано в версиях 1.6 и v. 1.7): https://www.elastic.co/guide/en/elasticsearch/reference/current/search-request-source-filtering.html

{
    "_source": {
        "include": [ "obj1.*", "obj2.*" ],
        "exclude": [ "*.description" ]
    },
    "query" : {
        "term" : { "user" : "kimchy" }
    }
}

Вы также можете использовать его в запросе GET:

curl "localhost:9200/myindex/mytype/66a8f299870b4cab?_source_exclude=file._content&pretty"

Предыдущий пример исключает содержимое файла в поле вложения.