java 查询转对象_在ElasticSearch中将SearchHit转换为Java对象

我正在尝试检索数据表单ES查询,我对如何将每次检索到的数据转换为Java对象感到困惑。 到现在为止,我可以使用Gson获取每个JSON格式的命中,但我认为从命中转换为JSON然后转换为Java对象是没有用的。在ElasticSearch中将SearchHit转换为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 responseFields = hit.getFields();

if (sourceAsString != null) {

Gson gson = new GsonBuilder().setDateFormat(sourceAsString)

.create();

}

}

2017-06-08

pik4

+0

我不确定你在那里试图达到什么目的。你实际上已经有了java对象(SearchHit数组命名为results)。你想获得对SearchHit的子对象的引用吗? –

+0

有没有直接的方法将SearchHit映射到另一个对象? 或者你需要实现构造函数? –

+0

如果您在这里看到 https://stackoverflow.com/a/30376770/4343294 您从SearchHit检索JSON对象 –