使用 java REST API 将 elasticsearch 聚合转换为代码会出错
Conversion of elasticsearch aggregation into code using java REST API is giving error
这在 kibana 控制台中运行良好,没有任何错误
POST rangedattr_4_1/_search
{
"size": 0,
"aggs": {
"user_field": {
"terms": {
"field": "FRONTLINK_OBJECT_GUID",
"size": 10
},
"aggs": {
"group_members": {
"max": {
"field": "MERGED_LINKS_TYPE"
}
},
"groupmember_bucket_filter": {
"bucket_selector": {
"buckets_path": {
"groupmembers": "group_members"
},
"script": "params.groupmembers %2==1"
}
},
"aggs":{
"top_hits": {
"size": 1
}
}
}
}
}
}
但是当我将其转换为 java 代码时,
像这样:
Map<String, String> bucketsPathsMap = new HashMap<>();
bucketsPathsMap.put("bucketselector", "FRONTLINK_OBJECT_GUID");
AggregationBuilder aggregation =AggregationBuilders
.terms("aggs").field(linkBackGuid).size(100000)
.subAggregation
(
AggregationBuilders.max("maxAgg").field("MERGED_LINKS_TYPE")
)
.subAggregation
(
PipelineAggregatorBuilders.bucketSelector("bucket_filter", bucketsPathsMap, script)
)
.subAggregation
(
AggregationBuilders.topHits("top").size(1)
);
它给出了所有分片失败的错误
但是当我 运行 这个 :
AggregationBuilder aggregation =AggregationBuilders
.terms("aggs").field(linkBackGuid).size(100000)
.subAggregation
(
AggregationBuilders.max("maxAgg").field("MERGED_LINKS_TYPE")
)
.subAggregation
(
AggregationBuilders.topHits("top").size(1)
);
它工作正常
根据我的信息,所有分片失败只会在文档损坏时发生。但正如我在这里看到的那样,Max-Aggregation 工作正常但同时 Bucket Selector Aggregation 出现错误
当我从
更改我的 bucketsPathsMap 时它起作用了
bucketsPathsMap.put("bucketselector","FRONTLINK_OBJECT_GUID")
到
bucketsPathsMap.put("bucketselector","maxAgg")
其中 FRONTLINK_OBJECT_GUID 是一个字段,maxAgg 有桶
这在 kibana 控制台中运行良好,没有任何错误
POST rangedattr_4_1/_search
{
"size": 0,
"aggs": {
"user_field": {
"terms": {
"field": "FRONTLINK_OBJECT_GUID",
"size": 10
},
"aggs": {
"group_members": {
"max": {
"field": "MERGED_LINKS_TYPE"
}
},
"groupmember_bucket_filter": {
"bucket_selector": {
"buckets_path": {
"groupmembers": "group_members"
},
"script": "params.groupmembers %2==1"
}
},
"aggs":{
"top_hits": {
"size": 1
}
}
}
}
}
}
但是当我将其转换为 java 代码时, 像这样:
Map<String, String> bucketsPathsMap = new HashMap<>();
bucketsPathsMap.put("bucketselector", "FRONTLINK_OBJECT_GUID");
AggregationBuilder aggregation =AggregationBuilders
.terms("aggs").field(linkBackGuid).size(100000)
.subAggregation
(
AggregationBuilders.max("maxAgg").field("MERGED_LINKS_TYPE")
)
.subAggregation
(
PipelineAggregatorBuilders.bucketSelector("bucket_filter", bucketsPathsMap, script)
)
.subAggregation
(
AggregationBuilders.topHits("top").size(1)
);
它给出了所有分片失败的错误
但是当我 运行 这个 :
AggregationBuilder aggregation =AggregationBuilders
.terms("aggs").field(linkBackGuid).size(100000)
.subAggregation
(
AggregationBuilders.max("maxAgg").field("MERGED_LINKS_TYPE")
)
.subAggregation
(
AggregationBuilders.topHits("top").size(1)
);
它工作正常
根据我的信息,所有分片失败只会在文档损坏时发生。但正如我在这里看到的那样,Max-Aggregation 工作正常但同时 Bucket Selector Aggregation 出现错误
当我从
更改我的 bucketsPathsMap 时它起作用了 bucketsPathsMap.put("bucketselector","FRONTLINK_OBJECT_GUID")
到
bucketsPathsMap.put("bucketselector","maxAgg")
其中 FRONTLINK_OBJECT_GUID 是一个字段,maxAgg 有桶