【发布时间】:2016-04-01 16:24:41
【问题描述】:
我有以下几点: 我注意到在运行代码结束时,如果我打印出 aggregations.asMap().get('subjects'); 我正进入(状态: org.elasticsearch.search.aggregations.bucket.terms.StringTerms@6cff59fa
打印出“聚合”给我:org.elasticsearch.search.aggregations.InternalAggregations@65cf321d
我真正想要的是整个字符串/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
}
【问题讨论】:
标签: java elasticsearch spring-data-elasticsearch