2014-01-24 4 views
11

В моем наборе данных документ содержит 20 + полей с вложенными объектами. Большинство из них - длинные текстовые поля. Эти поля важны для полнотекстового поиска, но нам нужно показать только заголовок, краткое описание и идентификатор на выходе.Могу ли я указать поля результатов в запросе elasticsearch?

Можно ли указать поля вывода в ElasticSearch для полного текстового запроса? (Как проекции в MongoDB)

ответ

15

Я думаю, что вы ищете fields свойства запроса поиска:

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

{ 
    "fields" : ["user", "postDate"], 
    "query" : { 
     "term" : { "user" : "kimchy" } 
    } 
} 

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

+0

как добавить одно статическое значение '«пользователь»:«kimchy»' и один динамический запрос, который может быть использован для поиска на остальных полях '" полей ": [" user "," postDate "," address "," description "],' – dhpratik

11

Заботьтесь в ElasticSearch 1.0.0.RC1 поля возвращаемые значения теперь всегда перечисляются, если нужен результат будет длинный вместо списка долгот (который может быть один список значений для вас наиболее времени) вы можете ограничить те с _source

{"_source" : ["field1", "field2", ...], 
    "query" : { 
     "term" : { "user" : "kimchy" } 
    } 
} 
Смежные вопросы