【问题标题】:Kibana Data Table nested object countingKibana 数据表嵌套对象计数
【发布时间】:2020-10-15 14:35:51
【问题描述】:

我使用的是 Kibana 6.5.1 版。

我的文档如下所示:

第一

{
"id": 12345,
"source": "Github",
"creation_date": "2020-10-14"
"files": [
 {
    "file_id": 444,
    "file_name": "test.png",
    "file_type": "png"
    },
    {
    "file_id": 445,
    "file_name": "test2.pdf",
    "file_type": "pdf"
    },
    {
    "file_id": 446,
    "file_name": "test3.pdf",
    "file_type": "pdf"
  }
]
}

{
"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_type,在右侧是所有文档中每个文件的计数。

我尝试设置 files.file_id 的唯一计数和字段聚合的拆分行 files.file_type.keyword

但我得到了这张桌子:

file_type | count
------------------
png       | 3
pdf       | 5

而且看起来不错,如果嵌套的“文件”字段中至少有一个文件与 file_type 匹配,它会计算一个文档中的所有文件。

我怎样才能让它看起来像第一张桌子?指标中的 JSON 输入会有所帮助吗?

【问题讨论】:

  • 你试过file_type聚合的唯一计数吗?
  • @Nejatians 是的,在这种情况下,它会为每个文档中的两种独特类型显示 2 个 pdf 和 2 个 png
  • 你能添加你的映射吗?您的字段被映射为嵌套字段?

标签: elasticsearch kibana


【解决方案1】:

您必须将“文件”字段映射为嵌套数据类型才能使其工作。 然后使用嵌套聚合。

示例数据的简单示例:

映射:

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
          }
        ]
      }
    }
  }
}

【讨论】:

  • 谢谢。你知道是否有办法可以将此查询放在数据表可视化上?
  • 通过查询,您可能可以将 _sql 端点与 ?format=csv 一起使用,但如果您想在 kibana 中执行此操作,则有一些限制 elastic.co/guide/en/elasticsearch/reference/current/…,不幸的是,kibana 不管理嵌套查询因此您必须进行转换或在特定索引中添加聚合数据才能执行此操作
猜你喜欢
  • 2023-03-03
  • 1970-01-01
  • 2016-02-29
  • 2020-03-11
  • 2015-08-19
  • 2020-04-22
  • 2015-03-10
  • 2019-06-20
  • 2020-04-25
相关资源
最近更新 更多