首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >具有多个字段值(bank_name)的字段(userid)的Kibana聚合可视化

具有多个字段值(bank_name)的字段(userid)的Kibana聚合可视化
EN

Stack Overflow用户
提问于 2019-04-11 03:05:32
回答 1查看 287关注 0票数 1

所以我有一个包含两个字段userid和bank_name的索引。每次用户获得一个新的银行帐户时,都会插入一个值,其中包含userid和用户在其中开户的银行名称。我必须使用kibanaelasticsearch来创建一个可视化的(比方说一个饼形图),它显示在同一银行名称中拥有超过2个(或4个可以更改)银行帐户的用户的所有计数。

我曾尝试创建子存储桶,但这提供了两件事,第一个显示根据其值划分的银行名称的总数,第二个显示每个用户在该银行拥有帐户的次数。我到处搜索,认为我必须在aggs中的某个地方使用sub_doc_count,但不知道在哪里或如何做到这一点。

以下面的数据为例:

代码语言:javascript
复制
[{
  "_id": 10001,
  "userid": 0,
  "bank_name": "xyz bank",
  "date": "2019-01-23"
},
 {
   "_id": 10002,
   "userid": 0,
   "bank_name": "abc bank",
   "date": "2019-01-29"
 },
 {
   "_id": 10003,
   "userid": 1,
   "bank_name": "xyz bank",
   "date": "2019-01-31"
 },
 {
   "_id": 10004,
   "userid": 2,
   "bank_name": "def bank",
   "date": "2019-02-02"
 },
 {
   "_id": 10005,
   "userid": 2,
   "bank_name": "abc bank",
   "date": "2019-02-03"
 },
 {
   "_id": 10006,
   "userid": 1,
   "bank_name": "xyz bank",
   "date": "2019-02-10"
 },
 {
   "_id": 10007,
   "userid": 1,
   "bank_name": "abc bank",
   "date": "2019-02-14"
 },
 {
   "_id": 10008,
   "userid": 0,
   "bank_name": "abc bank",
   "date": "2019-02-20"
 },
 {
   "_id": 10009,
   "userid": 0,
   "bank_name": "xyz bank",
   "date": "2019-02-20"
 }]

因此,上面应该得到一个饼形图,其中只有两个用户:0和1,其中0的计数为#2,1的计数为#1。用户2将不会被包括在内,因为两个的银行账户都是唯一的或从未重复过。

EN

回答 1

Stack Overflow用户

发布于 2019-04-11 05:05:28

不幸的是,我不知道如何使用Kibana的原生饼图可视化来实现所需的结果-但是,要执行所请求的聚合,您可以使用类似于以下内容的内容:

代码语言:javascript
复制
GET bank_users/_search
{
  "size": 0,
  "aggs": {
    "accounts_per_user": {
      "terms": {
        "field": "userid"
      },
      "aggs": {
        "accounts_per_bank": {
          "terms": {
            "field": "bank_name.keyword"
          },
          "aggs": {
            "filtered_banks": {
              "bucket_selector": {
                "buckets_path": {
                  "accounts": "_count"
                },
                "script": "params.accounts >= 2"
              }
            }
          }
        }
      }
    }
  }
}

这将从您的示例数据集中返回以下内容:

代码语言:javascript
复制
{
  "took" : 7,
  "timed_out" : false,
  "_shards" : {
    "total" : 5,
    "successful" : 5,
    "skipped" : 0,
    "failed" : 0
  },
  "hits" : {
    "total" : 9,
    "max_score" : 0.0,
    "hits" : [ ]
  },
  "aggregations" : {
    "accounts_per_user" : {
      "doc_count_error_upper_bound" : 0,
      "sum_other_doc_count" : 0,
      "buckets" : [
        {
          "key" : 0,
          "doc_count" : 4,
          "accounts_per_bank" : {
            "doc_count_error_upper_bound" : 0,
            "sum_other_doc_count" : 0,
            "buckets" : [
              {
                "key" : "abc bank",
                "doc_count" : 2
              },
              {
                "key" : "xyz bank",
                "doc_count" : 2
              }
            ]
          }
        },
        {
          "key" : 1,
          "doc_count" : 3,
          "accounts_per_bank" : {
            "doc_count_error_upper_bound" : 0,
            "sum_other_doc_count" : 0,
            "buckets" : [
              {
                "key" : "xyz bank",
                "doc_count" : 2
              }
            ]
          }
        },
        {
          "key" : 2,
          "doc_count" : 2,
          "accounts_per_bank" : {
            "doc_count_error_upper_bound" : 0,
            "sum_other_doc_count" : 0,
            "buckets" : [ ]
          }
        }
      ]
    }
  }
}

注这是使用默认的terms聚合,因此要注意限制(即,并非所有文档都可以检索,这会导致具有高基数和低size参数的大型数据集的计数不准确- ref:https://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations-bucket-terms-aggregation.html)。

你可以利用这一点来创建Vega可视化。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55619675

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档