我的代码有一个Jlastic格式的ElasticSearch查询和聚合,并希望调用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())
但是,我还有聚合的JSON,我没有看到可以用来从JSON构建聚合对象的AggregationsBuilder.wrapperAggregation()函数。
我错过了什么吗?
答案 0 :(得分:6)
我发现了答案,没有记录。 setAggregations()的byte []重载将接受JSON。我希望这对其他人有帮助。
val aggsRequestBuilder = new SearchRequestBuilder(client)
.setIndices(index())
.setQuery(QueryBuilders.wrapperQuery(query.toString())
.setAggregations(agg.toString().getBytes())