小编典典

在ElasticSearch中获取SearchResponse的结果

elasticsearch

我正在尝试使用ES作为MongoDB的索引。我已经成功地将它们集成在一起,但是我发现搜索API相当复杂且令人困惑。Java API也不太有用。

我可以找到完全匹配的内容,但是如何获得此结果?这是我的代码:

Node node = nodeBuilder().node();

SearchResponse sr = node.client().prepareSearch()
        .addAggregation(
            AggregationBuilders.terms("user").field("admin2san")
            .subAggregation(AggregationBuilders.terms("SPT").field("64097"))
        )
        .execute().actionGet();

SearchHit[] results = sr.getHits().getHits();
List<Firewall> myfirewall = results.getSourceAsObjectList(Firewall.class);
for (Firewall info : myfirewall) {
       System.out.println("search result is " + info);
}

阅读 1858

收藏
2020-06-22

共1个答案

小编典典

我不确定我是否理解您的问题。

如果要根据示例打印searchResponse的结果,则应为以下内容:

SearchHit[] results = sr.getHits().getHits();
for(SearchHit hit : results){
    String sourceAsString = hit.getSourceAsString();
    if (sourceAsString != null) {
        Gson gson = new GsonBuilder().setDateFormat(dateFormat)
                .create();
        System.out.println( gson.fromJson(sourceAsString, Firewall.class));
    }
}

我正在使用Gson将Json响应转换为FireWall(POJO)。

我希望这就是您想要的。

2020-06-22