2015-07-11 180 views
3

我在春天web應用程序如下要求:
Elasticsearch返回原始JSON使用Java API

  • 找到Elasticsearch對象和谷歌地圖上顯示出來(JSON格式首選)
  • 找到對象(同從Elasticsearch如上查詢),並在列表中顯示出來(Java對象格式首選,以顯示它的JSP頁)

我使用SearchRequestBuilder用JAVA寫的API搜索和它工作得很好:

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(); 

但對於谷歌地圖上顯示它,我寧願只是得到JSON對象從elasticsearch代替SearchResponse對象是這樣的:

{ 
    "_index": "indexName", 
    "_type": "type", 
    "_id": "9094", 
    "_version": 31, 
    "found": true, 
    "_source": { 
     //list of properties 
    } 
} 

是否可以使用Java API + SearchRequestBuilder獲得JSON響應或我必須爲此使用REST API?

回答

4

Java API不會映射到json(或其他任何實體)。但是,你可以這樣做:

+0

您可以使用jayway路徑來解析SearchHit.getSource(它也與像Jackson和SmartJSON這樣的Mappers集成映射回類/對象,反之亦然)。我覺得保持NoSQL數據庫類型不可知的重要性,比如Elastic。不要過於努力地製造「多種類型」。 – Dexter