Elasticsearch return 原始 json 与 java api
Elasticsearch return raw json with java api
我的 spring 网络应用程序有以下要求:
- 从 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 地图上显示它,我更愿意从 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)。
我的 spring 网络应用程序有以下要求:
- 从 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 地图上显示它,我更愿意从 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)。