2015-07-11 299 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