如何使用 ElasticSearch Java API 从 JSON 构建聚合

How to use the ElasticSearch Java API to build an Aggregation from JSON

我的代码有一个 JSON 格式的 ElasticSearch 查询和聚合,想调用 ElasticSearch Java API.

对于查询部分,我可以使用 WrapperQuery 从 JSON 构建查询,如下所示:

val query = Json.obj(
  "query_string" -> Json.obj("query" -> "*"))

val aggs = Json.obj(
  "gender" -> Json.obj("terms" -> Json.obj("field": "gender")),
  "age"    -> Json.obj("terms" -> Json.obj("field": "age")))

val aggsRequestBuilder = new SearchRequestBuilder(client)
  .setIndices(index())
  .setQuery(QueryBuilders.wrapperQuery(query.toString())
  .addAggregation(AggregationBuilders.???(aggs.toString())

但是,我也有用于聚合的 JSON,但我没有看到可用于从 JSON 构建聚合对象的 AggregationsBuilder.wrapperAggregation() 函数。

我是不是漏掉了什么?

我发现了答案,没有记录。 setAggregations() 的 byte[] 重载将接受 JSON。我希望这对其他人有帮助。

val aggsRequestBuilder = new SearchRequestBuilder(client)
  .setIndices(index())
  .setQuery(QueryBuilders.wrapperQuery(query.toString())
  .setAggregations(agg.toString().getBytes())