elasticsearch Kibana数据表嵌套对象计数
我正在使用Kibana版本6.5.1 我的文档如下所示:
elasticsearch Kibana数据表嵌套对象计数,
elasticsearch,kibana,
elasticsearch,Kibana,我正在使用Kibana版本6.5.1 我的文档如下所示: file_type | count ------------------ png | 1 pdf | 4 首先 第二 { "id": 12346, "source": "stackoverflow", "creation_date": "2020-10-14" "files": [ {
file_type | count
------------------
png | 1
pdf | 4
首先
第二
{
"id": 12346,
"source": "stackoverflow",
"creation_date": "2020-10-14"
"files": [
{
"file_id": 447,
"file_name": "example.pdf",
"file_type": "pdf"
},
{
"file_id": 448,
"file_name": "anotherOne.pdf",
"file_type": "pdf"
}
]
}
等等
我想创建如下所示的数据表:
file_type | count
------------------
png | 1
pdf | 4
因此,在左边我们可以看到files.file_类型,在右边可以看到所有文档中每个文件的计数
我已尝试设置files.file\u id的唯一计数指标,并拆分字段files.file\u type.keyword的聚合行
但我得到这张桌子:
file_type | count
------------------
png | 3
pdf | 5
如果嵌套的“文件”字段中至少有一个与文件类型匹配的文件,那么就可以按它看起来的样子计算一个文档中的所有文件
我怎样才能让它看起来像第一张桌子?度量中的JSON输入会有帮助吗?您必须将“文件”字段映射为嵌套数据类型才能使其工作。
然后使用嵌套聚合
一个包含示例数据的快速示例:
映射:
PUT test/_mapping
{
"properties": {
"files": {
"type": "nested"
}
}
}
查询:
GET test/_search?filter_path=aggregations
{
"size": 0,
"aggs": {
"files_nested": {
"nested": {
"path": "files"
},
"aggs": {
"files_type": { "terms": { "field": "files.file_type.keyword" } }
}
}
}
}
答复如下:
{
"aggregations" : {
"files_nested" : {
"doc_count" : 5,
"files_type" : {
"doc_count_error_upper_bound" : 0,
"sum_other_doc_count" : 0,
"buckets" : [
{
"key" : "pdf",
"doc_count" : 4
},
{
"key" : "png",
"doc_count" : 1
}
]
}
}
}
}
您是否尝试了文件类型聚合的唯一计数?@Nejatians是的,在这种情况下,每个文档中显示两个唯一类型的2 pdf和2 png。请添加映射。您的字段映射为嵌套字段?谢谢。你知道有没有一种方法可以把这个查询放在数据表可视化上吗?对于一个查询,你可能可以使用带有?format=csv的_sql端点,但是如果你想在kibana中这样做,有一些限制,不幸的是,kibana不管理嵌套查询,因此您必须进行转换或在特定索引中添加聚合数据才能执行此操作