使用Java api进行Elasticsearch聚合

Ume*_*cha 10 java elasticsearch

您好我正在尝试通过遵循sql查询进行弹性搜索查询,我想使用Java API实现相同的逻辑

select dttime, avg(cpu) from table cpustats where server="X" and dttime="Y" group by dttime,cpu
Run Code Online (Sandbox Code Playgroud)

现在我有以下Java代码但它没有返回预期的输出

SearchResponse response = client.prepareSearch("cpuindex")
      .setTypes("cputype")
      .setQuery(QueryBuilders.matchAllQuery())
      .addAggregation(AggregationBuilders.terms("cpu_agg")
           .field("cpu").size(100))
      .execute().actionGet();
Run Code Online (Sandbox Code Playgroud)

请指导我是Elastic search的新手.提前致谢.

pro*_*mer 18

我认为这会有所帮助.

SearchResponse response=
                client.prepareSearch("your_index_name_here").setQuery(QueryBuilders.filteredQuery(QueryBuilders.matchAllQuery(),
                FilterBuilders.andFilter(
                        FilterBuilders.termFilter("server","x"),
                        FilterBuilders.termFilter("dt_time","x")
                ))).addAggregation(
                AggregationBuilders.terms("dt_timeaggs").field("dt_time").size(100).subAggregation(
                        AggregationBuilders.terms("cpu_aggs").field("cpu").size(100)
                )
        ).setSize(0).get();
Run Code Online (Sandbox Code Playgroud)

请验证.