我在Java中将Elasticsearch响应存储为字符串值,如何仅处理匹配数据
答案 0 :(得分:1)
从Java访问它的最好方法是使用Elastic的官方Java REST API。该API使您可以使用Java对象,而不必自己处理数据。
答案 1 :(得分:1)
例如,您要检索所有数据作为Car
类型。您的查询响应存储在searchResponse
变量中,获取所有匹配并将其序列化为对象。
看下面的例子:
Gson gson = new Gson();
var flowers = new ArrayList<Flower>();
Arrays.stream(searchResponse.getHits().getHits()).forEach(hit ->
cars.add(gson.fromJson(hit.getSourceAsString(), Car.class)));
当然,我正在使用gson将JSON序列化为对象。
答案 2 :(得分:0)
您首先需要使用gson,Jackson或其他方法将json字符串转换为json / map对象。
然后,一旦有了地图,命中项就位于:hits.hits键,作为一组地图,该数组中的每个地图都代表一个命中及其元数据。原始文档在每次匹配中都位于_source键下。
我也强烈建议您阅读Elasticsearch文档,这是很好的资料。