Преобразование агрегации эластичного поиска в код с использованием Java REST API дает ошибку - PullRequest
0 голосов
/ 27 июня 2018

Это нормально работает в консоли кибана без ошибок

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

выдаёт все осколки: ошибка 1007 *

но когда я запускаю это:

            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 выдает ошибку

1 Ответ

0 голосов
/ 29 июня 2018

это сработало, когда я изменил свой bucketsPathsMap с

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

до

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

, где FRONTLINK_OBJECT_GUID - это поле, а maxAgg имеет сегменты

...