У меня есть следующие требования в моем весеннем веб-приложение:
Elasticsearch вернуться сырец JSON с Java API
- найти объекты Elasticsearch и отображения их на карте Google (формат JSON предпочтительнее)
- найти объекты (то же запрос, как указано выше) от Elasticsearch и отображать их в списке (Java объектов в формате предпочтительным, чтобы отобразить его на странице JSP)
Я написал поиск с использованием Java API SearchRequestBuilder и она отлично работает:
SearchRequestBuilder request = client.prepareSearch("index").setTypes("type")
.setSearchType(SearchType.QUERY_THEN_FETCH).setFrom(0).setSize(10).addFields(RESPONSE_FIELDS);
//request is much more complicated
//...
SearchResponse response = request.execute().actionGet();
SearchHits hits = response.getHits();
Но для отображения его на карте Google я предпочел бы просто получить объект JSON из elasticsearch вместо SearchResponse объекта, как это:
{
"_index": "indexName",
"_type": "type",
"_id": "9094",
"_version": 31,
"found": true,
"_source": {
//list of properties
}
}
Можно ли получить ответ JSON с помощью Java API + SearchRequestBuilder или Я должен использовать REST API для этого?
Вы можете использовать путь jayway для синтаксического анализа SearchHit.getSource (который также интегрируется с Mappers как Jackson & SmartJSON для отображения обратно к классу/объекту и наоборот). Я считаю важным сохранить типы агностик для баз данных NoSQL, таких как Elastic. Не пытайтесь слишком усердно сделать «много типов». – Dexter