繁体   English   中英

Spring data Elasticsearch 将 Elasticsearch 聚合查询转化为代码

[英]Spring data Elasticsearch to convert Elasticsearch aggregation query into code

{
  "query": {
    "bool": {
      "must": [
        {
          "term": {
            "id": {
              "value": 1111
            }
          }
        }
      ]
    }
  },
  "aggs": {
    "sequence": {
      "terms": {
        "field": "sequence.keyword"
      },
      "aggregations": {
        "amount": {
          "sum": {
            "field": "amount"
          }
        }
      }
    },
    "totalAmount": {
      "sum_bucket": {
        "buckets_path": "sequence>amount"
      }
    }
  }
}

Spring Data ElasticSearch 3.2

final SearchQuery searchQuery =
        new NativeSearchQueryBuilder()
            .withQuery(QueryHelper.boolQueryBuilder(id))
            .addAggregation(
                terms("sequence")
                    .field("sequence.keyword")
                    .subAggregations(subAggregations()))
            .addAggregation(sumBucket("sum_bucket", "sequence>amount"))
            .build();

现在,由于 NativeSearchQueryBuilder 的 addAggregation 方法接受 AbstractAggregationBuilder 并且 sumBucket 是 PipelineAggregationBuilder 类型,由于编译错误,无法将此值传递给 addAggregation(sumBucket("sum_bucket", "sequence>amount")),任何想法如何使用 sumBucket术语聚合和用java编写?

我刚刚检查了 Spring Data Elasticsearch 和 Elasticsearch 本身的代码。 Spring Data Elasticsearch 目前无法使用PipelineAggregationBuilder派生聚合。

我不知道,为什么 Elasticsearch 有两种不同的聚合类层次结构,但 Spring Data Elasticsearch 目前只能处理AggregationBuilder而不能处理PipelineAggregationBuilder派生类。

我为此在 Jira 中创建了一个问题

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM