ElasticSearch 桶聚合
ElasticSearch Bucket Aggregations
我是 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'
分组
所以返回的文件应该是这样的:
{
{ 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 可以使用)
如有任何帮助,我们将不胜感激!
看看这个 pull request 与 Jest 的合并。你可以在那里找到一个很好的代码示例。它与您在问题中描述的解决方案并不完全相同,但它是获得接近您想要的结果的唯一可能方法。
另外,看看对拉取请求的测试。
<code>for(Entry entry : termBuckets) {
TopHitsAggregation topHitAgg = entry.getTopHitsAggregation("top_hits_test");
List<String> hits = topHitAgg.getSourceAsStringList();
assertEquals(2, hits.size());
}
似乎接近你想要的。
我是 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'
分组所以返回的文件应该是这样的:
{
{ 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 可以使用)
如有任何帮助,我们将不胜感激!
看看这个 pull request 与 Jest 的合并。你可以在那里找到一个很好的代码示例。它与您在问题中描述的解决方案并不完全相同,但它是获得接近您想要的结果的唯一可能方法。
另外,看看对拉取请求的测试。
<code>for(Entry entry : termBuckets) {
TopHitsAggregation topHitAgg = entry.getTopHitsAggregation("top_hits_test");
List<String> hits = topHitAgg.getSourceAsStringList();
assertEquals(2, hits.size());
}
似乎接近你想要的。