Есть ли способ исключить поле в запросе 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"
Предыдущий пример исключает содержимое файла в поле вложения.