3

我的代码有一个 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() 函数。

我错过了什么吗?

4

1 回答 1

6

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

val aggsRequestBuilder = new SearchRequestBuilder(client)
  .setIndices(index())
  .setQuery(QueryBuilders.wrapperQuery(query.toString())
  .setAggregations(agg.toString().getBytes())
于 2016-01-20T18:29:19.117 回答