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

Eri*_*ord 3 elasticsearch elasticsearch-java-api

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

对于Query部分,我可以使用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())
Run Code Online (Sandbox Code Playgroud)

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

我错过了什么吗?

Eri*_*ord 6

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

val aggsRequestBuilder = new SearchRequestBuilder(client)
  .setIndices(index())
  .setQuery(QueryBuilders.wrapperQuery(query.toString())
  .setAggregations(agg.toString().getBytes())
Run Code Online (Sandbox Code Playgroud)

  • 如何在ES 5.6中使用`RestHighLevelClient`执行此操作? (2认同)