Ответ 1
Нет, это невозможно в данный момент. Если главной проблемой являются производительность и сложность анализа, вы можете рассмотреть возможность использования разных клиентов: java client или Thrift plugin.
При выполнении поиска Elasticsearch возвращает структуру данных, которая содержит различную метаинформацию.
Фактический набор результатов содержится в поле "hits" в результате результата JSON, возвращаемого из базы данных.
Возможно ли, чтобы Elasticsearch возвратил только нужные данные (содержимое поля "hits" ), не будучи встроенным во все другие метаданные?
Я знаю, что смогу проанализировать результат в JSON и извлечь его, но мне не нужна сложность, хлопот, производительность.
спасибо!
Вот пример структуры данных, возвращаемой Elasticsearch.
{
"_shards":{
"total" : 5,
"successful" : 5,
"failed" : 0
},
"hits":{
"total" : 1,
"hits" : [
{
"_index" : "twitter",
"_type" : "tweet",
"_id" : "1",
"_source" : {
"user" : "kimchy",
"postDate" : "2009-11-15T14:12:12",
"message" : "trying out Elastic Search"
}
}
]
}
}
Нет, это невозможно в данный момент. Если главной проблемой являются производительность и сложность анализа, вы можете рассмотреть возможность использования разных клиентов: java client или Thrift plugin.
Вы можете по крайней мере фильтровать результаты, даже если их невозможно извлечь. В разделе common options "страницы REST API объясняется опция" filter_path". Это позволяет вам фильтровать только те части дерева, которые вас интересуют. Древовидная структура остается неизменной, но без дополнительных метаданных.
Я обычно добавляю параметр запроса:
&filter_path=hits.hits.*,aggregations.*
В документации ничего не сказано, что делает ваш запрос быстрее (я сомневаюсь, что это так), но по крайней мере вы могли бы вернуть только интересные части.