0
我有以下幾點: 我注意到,在運行的代碼,如果我打印出aggregations.asMap()結束得到(「主體」)。 我越來越: [email protected]cff59fa如何在spring-data-elasticsearch中使用聚合獲得elasticsearch json響應?
打印出 「聚合」 給我:[email protected]21d
我真正想要的是通常返回的整個字符串/ json響應,如果您想要使用elasticsearch來獲取聚合。如何獲得聚合查詢中的原始響應?另外,是否有一種方法可以迭代並打印出這些「包裝」對象中的內容?
@Test
public void shouldReturnAggregatedResponseForGivenSearchQuery() {
// given
SearchQuery searchQuery = new NativeSearchQueryBuilder()
.withQuery(matchAllQuery())
.withSearchType(COUNT)
.withIndices("articles").withTypes("article")
.addAggregation(terms("subjects").field("subject"))
.build();
// when
Aggregations aggregations = elasticsearchTemplate.query(searchQuery, new ResultsExtractor<Aggregations>() {
@Override
public Aggregations extract(SearchResponse response) {
return response.getAggregations();
}
});
// then
System.out.println(aggregations); // gives me some cryptic InternalAggregations object, how do I get to the raw JSON normally returned by elasticsearch?
System.out.println(aggregations.asMap().get("subjects")); // gives me some StringTerms object I have no idea how to iterate over to get results
}
有什麼可以讓我在生JSON傳遞,而不必使用所有這些建設者,使查詢? – Rolando
我不這麼認爲。這個API的全部意義在於,無需處理JSON就可以輕鬆構建查詢。 – Val
@Rolando我偶然發現了elasticsearch模板,看起來就像我將要使用的那樣。試圖找出JAVA API,然後使用elasticsearch slowlog文件進行匹配,如果查詢正確的話是瘋狂的! – dy10