【问题标题】:ElasticSearch Bucket AggregationsElasticSearch 桶聚合
【发布时间】:2017-06-27 16:40:56
【问题描述】:

我是 ElasticSearch 聚合的新手。

通过阅读文档,我了解到在我的用例中我需要使用 Bucket Aggregations。

但是,我无法找到任何可靠的文档/代码,这些文档/代码提供了如何为此构建查询的示例。我使用 Jest 作为我的客户端与 ElasticSearch 对话。

我的用例是:

假设我有以下文件:

{ name : 'abc' , field_1: '123' , field_2 : '3211' } , { name : 'abc' , field_1: '33' , field_2 : '011' }, { name : 'xyz' , field_1: '33' , field_2 : '011' } , { name : 'xyz' , field_1: '33' , field_2 : '011' }

当我查询 ES 时,我希望结果按字段“名称”分组

所以返回的文档会是这样的:

{
 { name : 'abc' , 
     aggregation : { 
     { 
           field_1 : '123' , field_2 : '3211' 
       } ,

     { 
           field_1 : '33' , field_2 : '011' 
       } ,

}

} 

,

{ name : 'xyz' , 
     aggregation : { 
     { 
           field_1 : '123' , field_2 : '3211' 
       } ,

     { 
           field_1 : '33' , field_2 : '011' 
       } ,

}

}

}

我找不到任何使用 Jest / 在 ElastcSearch 中使用 SearchSourceBuilders 的示例代码(Jest 可以使用)

任何帮助将不胜感激!

【问题讨论】:

    标签: java elasticsearch elasticsearch-java-api elasticsearch-jest


    【解决方案1】:

    看看这个合并到 Jest 的 pull request。你可以在那里找到一个很好的代码示例。它与您在问题中描述的解决方案不完全相同,但它是实现接近您想要的结果的唯一可能方法。 另外,看看对拉取请求的测试。 for(Entry entry : termBuckets) { TopHitsAggregation topHitAgg = entry.getTopHitsAggregation("top_hits_test"); List<String> hits = topHitAgg.getSourceAsStringList(); assertEquals(2, hits.size()); } 似乎接近你想要的。

    【讨论】:

      猜你喜欢
      • 2021-06-06
      • 2021-06-06
      • 1970-01-01
      • 2017-09-22
      • 2018-10-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-04
      • 2021-07-26
      相关资源
      最近更新 更多