Могу ли я указать поля результатов в запросе 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" }
    }
}