如何在ElasticSearch 2.2.0 Java API中调用signficantterms聚合

时间:2016-03-15 20:39:08

标签: java elasticsearch aggregation

我刚刚切换到ElasticSearch 2.2.0,Java API中的addAggregation方法(SearchRespone#prepareResponse ...)似乎已经改变,但是这里的文档显示了一个无效的方法。也许我只是一个相当贫穷的Google员工。

https://www.elastic.co/guide/en/elasticsearch/client/java-api/current/_bucket_aggregations.html#java-aggs-bucket-terms

下面这个,由于显而易见的原因(类型不匹配)不会编译:

.setAggregations(AggregationBuilders.significantTerms("termagg").field("item_type").size(100))
          .setFrom(0)
          .setSize(0)
          .setSearchType(SearchType.QUERY_THEN_FETCH)
          .setScroll(new TimeValue(60000))
          .setExplain(true)
          .execute()
          .actionGet();

由于新的.addAggregations方法将采用XContent,我尝试使用XContent构建器构建XContent对象,但也无法使其工作。这个看似无限的排列之一我试过看了,但失败了,如下所示:

.setAggregations(AggregationBuilders.terms(“termagg”)。field(“item_type”)。size(100).toXContent(XContentBuilder.builder(XContentFactory.jsonBuilder()),ToXContent.EMPTY_PARAMS))

是否有人知道正确的咒语使这项工作?我在以前的版本中完成了它,关于我的连接,查询和处理响应的其他一切都很好。

谢谢!

更新

这是有效的代码......

  SignificantTermsBuilder ghgb = AggregationBuilders.significantTerms("type_in_bin").field("item_type");

        SearchResponse response = tc.prepareSearch("someindex")
                .setQuery(qb)
                .addAggregation(ghgb)
                .setFrom(0)
                .setSize(250)
                .setScroll(new TimeValue(60000))
                .setExplain(true)
                .execute()
                .actionGet();

0 个答案:

没有答案