【问题标题】:Aggregations in Jest client without JSON query没有 JSON 查询的 Jest 客户端中的聚合
【发布时间】:2017-02-02 12:27:38
【问题描述】:

在探索 elasticsearch 中的聚合时,我发现聚合功能可以通过 JSON 查询在基于 HTTP 的 JEST 客户端中实现,但不能在基于 TCP 的 Java 客户端中实现。

我正在使用 Jest 客户端并通过运行良好的查询字符串实现聚合。但我觉得随着过滤器的增加,它变得非常麻烦。 我想知道除了在 JEST 客户端中使用 JSON 查询(​​类似于 TCP 客户端中的聚合构建器)之外,是否还有其他方法可以实现聚合以及我们如何实现它?

【问题讨论】:

    标签: elasticsearch elasticsearch-jest


    【解决方案1】:

    这是我实现聚合的解决方案,别忘了先添加查询。

    org.elasticsearch.search.builder.SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
    
    TermsAggregationBuilder termsAggregationBuilder =
                AggregationBuilders.terms(fieldName).field("keyword");
    termsAggregationBuilder.minDocCount(minDocCount);
    termsAggregationBuilder.size(size);
    searchRequestBuilder.aggregation(termsAggregationBuilder);
    
    Search search = new io.searchbox.core.Search.Builder(searchSourceBuilder.toString())
         .addIndex(indexNameBuilder.getIndexName(searchContext.getCompanyId()))
         .build();
    
    SearchResult result = jestConnectionManager.getClient().execute(search);
    

    【讨论】:

      【解决方案2】:

      这是我登陆的:

      SearchSourceBuilder searchBuilder = SearchSourceBuilder
           .searchSource()
           .size(0)
           .query(QueryBuilders.termQuery("field", "my value"))
           .aggregation(
                AggregationBuilders
                    .sum("number_field_sum")
                    .field("number_field")
           );
      Search search = new Search.Builder(searchBuilder.toString())
           .addIndex("my-index")
           .build();
      SearchResult result = jestClient.execute(search);
      

      这与您想出的大致相同,但我将查询放入SearchSourceBuilder 并稍微简化了示例。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-12-20
        • 2022-08-09
        • 1970-01-01
        • 2021-01-29
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多