Могу ли я указать поля результатов в запросе elasticsearch?
В моем наборе данных документ содержит 20 + полей с вложенными объектами. Большинство из них - длинные текстовые поля. Эти поля важны для полнотекстового поиска, но нам нужно показать только заголовок, краткое описание и идентификатор на выходе.
Можно ли указать поля вывода в ElasticSearch для полного текстового запроса? (например, проекция в MongoDB)
Ответы
Ответ 1
Я думаю, что вы ищете свойство fields
запроса поиска:
Позволяет выборочно загружать определенные поля для каждого документа представленный поисковым ударом. По умолчанию загружается внутренний _source
поле.
{
"fields" : ["user", "postDate"],
"query" : {
"term" : { "user" : "kimchy" }
}
}
Поля будут автоматически загружать сохраненные поля (отображение хранилища, установленное на да) или, если не сохранено, загрузит _source
и извлечет его из него (позволяет возвращать вложенный объект документа).
Ответ 2
Позаботьтесь о ElasticSearch 1.0.0.RC1, теперь значения полей возвращают всегда списки,
если нужно, чтобы результат был длинным, а не списком длин (который может быть для вас единственным списком значений), вы можете ограничить их с помощью _source
{"_source" : ["field1", "field2", ...],
"query" : {
"term" : { "user" : "kimchy" }
}
}