我正在尝试使用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); }
解决方法
我不太确定我理解你的问题.
如果你想根据你的例子打印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).
我希望这就是你要找的东西.