如何使用 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())
我的代码有一个 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())