【问题标题】:How to use the ElasticSearch Java API to build an Aggregation from JSON如何使用 ElasticSearch Java API 从 JSON 构建聚合
【发布时间】:2023-03-03 14:37:01
【问题描述】:

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

我错过了什么吗?

【问题讨论】:

    标签: elasticsearch elasticsearch-java-api


    【解决方案1】:

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

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

    【讨论】:

    • 如何在 E.S 5.6 中使用 RestHighLevelClient 做到这一点?
    猜你喜欢
    • 2016-01-10
    • 1970-01-01
    • 2018-10-10
    • 2022-06-30
    • 2023-03-04
    • 2014-01-27
    • 1970-01-01
    • 1970-01-01
    • 2021-07-07
    相关资源
    最近更新 更多