0
我正在嘗試檢索數據表單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<String, SearchHitField> responseFields = hit.getFields();
if (sourceAsString != null) {
Gson gson = new GsonBuilder().setDateFormat(sourceAsString)
.create();
}
}
我不確定你在那裏試圖達到什麼目的。你實際上已經有了java對象(SearchHit數組命名爲results)。你想獲得對SearchHit的子對象的引用嗎? –
有沒有直接的方法將SearchHit映射到另一個對象? 或者你需要實現構造函數? – pik4
如果您在這裏看到 https://stackoverflow.com/a/30376770/4343294 您從SearchHit檢索JSON對象 – pik4