我有一个分层数据的索引。以下是我的索引locations_hierarchy
中的示例文档:
{
"_index" : "locations_hierarchy",
"_type" : "_doc",
"_id" : "1",
"_score" : 1.0,
"_source" : {
"category_path" : "Art Gallery, Paintings, Case 1"
}
},
{
"_index" : "locations_hierarchy",
"_type" : "_doc",
"_id" : "2",
"_score" : 1.0,
"_source" : {
"category_path" : "Display Gallery, Small Worlds, Case 1, Shelf 2"
}
}
字符串
下面是我想要实现的聚合:
{
"key" : "Art Gallery",
"doc_count" : 4,
"category_sub" : {
"doc_count_error_upper_bound" : 0,
"sum_other_doc_count" : 0,
"buckets" : [
{
"key" : "Paintings",
"doc_count" : 2,
"category_sub_sub" : {
"doc_count_error_upper_bound" : 0,
"sum_other_doc_count" : 0,
"buckets" : [
{
"key" : "Case 1",
"doc_count" : 1
},
{
"key" : "Case 3",
"doc_count" : 1
}
]
}
}
型
我曾尝试在聚合查询中使用include和exclude来聚合它们,但这是一个相当手动的过程,并且对于我不知道层次结构中的级别数量的情况不起作用。
在Elasticsearch中,有没有可能解决路径层次令牌字段的层次聚合?
1条答案
按热度按时间yc0p9oo01#
首先,我建议您的数据中包含
hierarchical category fields
。您可以通过在摄取期间解析数据来实现它。我发现了一种方法来实现与当前数据的结果,你有,这不是你想要的,但希望它有帮助!
个字符
结果:
型