Elasticsearch return 原始 json 与 java api

Elasticsearch return raw json with java api

我的 spring 网络应用程序有以下要求:

我用 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 地图上显示它,我更愿意从 elasticsearch 中获取 JSON 对象而不是像这样的 SearchResponse 对象:

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

是否可以使用 Java API + SearchRequestBuilder 获得 JSON 响应,或者我必须为此使用 REST API?

Java api 不会为您映射到 json(或与此相关的任何其他实体)。但是,您可以这样做:

  • 使用spring-data-elasticsearch直接反序列化为一个实体
  • 从 Java api 获取响应并使用类似 Jackson
  • 的内容解析为 json
  • 考虑使用 jest Api,它将 return 一个 gson (Googles json)。