使用Java高级Rest客户端进行聚合
编辑:我正在使用弹性搜索7.3.0 我尝试使用聚合和子聚合进行查询,但是SearchResponse中没有子聚合 作为调试的一部分,我在单元测试中运行了查询,复制了查询,并使用postman手动运行了查询。在这里,响应正是我所期望的,但是由于某种原因,在我的java代码中,缺少了部分使用Java高级Rest客户端进行聚合,java,elasticsearch,Java,elasticsearch,编辑:我正在使用弹性搜索7.3.0 我尝试使用聚合和子聚合进行查询,但是SearchResponse中没有子聚合 作为调试的一部分,我在单元测试中运行了查询,复制了查询,并使用postman手动运行了查询。在这里,响应正是我所期望的,但是由于某种原因,在我的java代码中,缺少了部分 SearchRequest=newsearchrequest(“索引”); SearchSourceBuidler search=新的SearchSourceBuilder(); SortBuilder sortB
SearchRequest=newsearchrequest(“索引”);
SearchSourceBuidler search=新的SearchSourceBuilder();
SortBuilder sortByDate=SortBuilders
.fieldSort(“日期”)
.订单(分类说明);
//获取每个存储桶的最新结果
TopHitsAggregationBuilder最新结果=聚合生成器
.topHits(“最新”)
.sort(sortByDate)
.fetchSource(“*”,“”)
.尺寸(1);
//每项服务合计
TermsAggregationBuilder perService=聚合生成器
.条款(“服务”)
.field(“service.service\u id”)
.次聚集(最新结果);
搜索聚合(perService);
搜索。大小(1);
请求。来源(搜索);
SearchResponse=client.search(request,RequestOptions.DEFAULT);
以下是生成的请求:
{
"size": 0,
"aggregations": {
"services": {
"terms": {
"field": "service.service_id",
"size": 10,
"min_doc_count": 1,
"shard_min_doc_count": 0,
"show_term_doc_count_error": false,
"order": [
{
"_count": "desc"
},
{
"_key": "asc"
}
]
},
"aggregations": {
"latest": {
"top_hits": {
"from": 0,
"size": 1,
"version": false,
"seq_no_primary_term": false,
"explain": false,
"_source": {
"includes": [
"*"
],
"excludes": [
""
]
},
"sort": [
{
"date": {
"order": "desc"
}
}
]
}
}
}
}
}
}
在我的代码中,响应是
{
...
"aggregations": {
"sterms#services": {
"doc_count_error_upper_bound": 0,
"sum_other_doc_count": 0,
"buckets": []
}
}
}
如果手动运行相同的查询,则
{
...
"aggregations": {
"services": {
"doc_count_error_upper_bound": 0,
"sum_other_doc_count": 0,
"buckets": [
{
"key": "09045f59-3709-4769-8c92-d611f773a401",
"doc_count": 2,
"latest": {
"hits": {
"total": {
"value": 2,
"relation": "eq"
},
"max_score": null,
"hits": [ ... ]
你能显示生成的查询吗?@Val我用完整的请求编辑了这个问题。