Search code examples
restelasticsearchsharding

Conversion of elasticsearch aggregation into code using java REST API is giving error


This is working fine in kibana console without any error

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
        }
  }

  }
}
}
}

But when I converted this into java code, like this:

      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)
                        );

it is giving all shards failed error

but when I run this :

            AggregationBuilder aggregation =AggregationBuilders
                .terms("aggs").field(linkBackGuid).size(100000)
                .subAggregation
                        (
                                AggregationBuilders.max("maxAgg").field("MERGED_LINKS_TYPE")
                        )
                  .subAggregation
                       (
                               AggregationBuilders.topHits("top").size(1)
                        );

it is working fine

According to my information all shards failed will occur only if the docs are corrupted. But as I saw here, Max-Aggregation is working fine but at the same moment Bucket Selector Aggregation is giving error


Solution

  • it worked when I changed my bucketsPathsMap from

         bucketsPathsMap.put("bucketselector","FRONTLINK_OBJECT_GUID") 
    

    to

     bucketsPathsMap.put("bucketselector","maxAgg")
    

    where FRONTLINK_OBJECT_GUID is a field and maxAgg has buckets