在ElasticSearch中将SearchHit转换为Java对象
我试图从ES查询中检索数据,但我对如何将每次检索到的数据转换为Java对象感到困惑。 到目前为止,我可以使用Gson以JSON格式获得每个命中,但我认为从命中转换为JSON然后再转换为Java对象是无用的
我目前的代码是:
TransportClient client = new PreBuiltTransportClient(Settings.EMPTY)
.addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("127.0.0.1"), 9300));
Settings settings = Settings.builder()
.put("cluster.name", "elasticsearch")
.put("path.home", "/Users/user/Apps/elasticsearch-5.4.1")
.build();
QueryBuilder qb = termQuery("price", 12);
SearchResponse response = client.prepareSearch("kal").setTypes("products")
.setSearchType(SearchType.DEFAULT)
.setQuery(qb)
.get();
SearchHit[] results = response.getHits().getHits();
for (SearchHit hit : results) {
String sourceAsString = hit.getSourceAsString();
Map<String, SearchHitField> responseFields = hit.getFields();
if (sourceAsString != null) {
Gson gson = new GsonBuilder().setDateFormat(sourceAsString)
.create();
}
}
# 1 楼答案
# 2 楼答案
一行
# 3 楼答案
我实现了这个解决方案,但我不确定这是否是正确的方法