elasticsearch 使用过滤器对Kibana/Visualize中的值进行计数?,elasticsearch,kibana,elasticsearch,Kibana" /> elasticsearch 使用过滤器对Kibana/Visualize中的值进行计数?,elasticsearch,kibana,elasticsearch,Kibana" />

elasticsearch 使用过滤器对Kibana/Visualize中的值进行计数?

elasticsearch 使用过滤器对Kibana/Visualize中的值进行计数?,elasticsearch,kibana,elasticsearch,Kibana,(我对麋鹿堆还不熟悉,可能会问一些明显的问题……) 我有描述客户信息的文件,包括姓名、地址、年龄等数据。。。 有时,并非所有这些字段都存在,我想知道填写这些字段的文档数量 如果数据如下所示: PUT customers { "mappings": { "customer": { "properties": { "id": { "type": "integer" }, "category": {

(我对麋鹿堆还不熟悉,可能会问一些明显的问题……)

我有描述客户信息的文件,包括姓名、地址、年龄等数据。。。 有时,并非所有这些字段都存在,我想知道填写这些字段的文档数量

如果数据如下所示:

PUT customers
{
  "mappings": {
    "customer": {
      "properties": {
        "id": {
          "type": "integer"
        },
        "category": {
          "type": "keyword"
        },
        "email": {
          "type": "text"
        },
        "age": {
          "type": "integer"
        },
        "address": {
          "type": "text"
        }
      }
    }
  }
}


POST _bulk
{"index":{"_index":"customers","_type":"customer"}}
{"id":"1","category":"aa","email":"sam@test.com"}
{"index":{"_index":"customers","_type":"customer"}}
{"id": "2", "category" : "aa", "age": "5"}
{"index":{"_index":"customers","_type":"customer"}}
{"id": "3", "category" : "aa", "email": "bob@test.com", "age": "36"}
{"index":{"_index":"customers","_type":"customer"}}
{"id": "4", "category" : "bb", "email": "kim@test.com", "age": "42", "address": "london"}
想法是在Kibana中可视化一个数据表,如:

+----------+-------+-------+-----+---------+
| category | total | email | age | address |
+----------+-------+-------+-----+---------+
| aa       |     3 |     2 |   2 |       0 |
| bb       |     1 |     1 |   1 |       1 |
+----------+-------+-------+-----+---------+
(例如:我们有3位“aa”类客户;其中2位给出了他们的电子邮件,2位给出了他们的年龄,没有一位给出了地址)

我可以通过以下查询了解如何做到这一点:

POST /customers/_search?size=0
{
  "aggs": {
    "category": {
      "terms": {
        "field": "category"
      },
      "aggs": {
        "count_email": {
          "filter": {
            "exists": {
              "field": "email"
            }
          }
        },
        "count_age": {
          "filter": {
            "exists": {
              "field": "age"
            }
          }
        },
        "count_address": {
          "filter": {
            "exists": {
              "field": "address"
            }
          }
        }
      }
    }
  }
}
但我找不到在Kibana如何做到这一点。 我应该使用脚本字段吗?JSON输入?怎样?有更好的办法吗


谢谢您的建议。

在UI中,我可以使用关键字术语过滤器拆分行

下面是一个让你开始的url

该调用将创建一个数据表,按计数聚合,并按类别关键字项拆分行

http://localhost:5601/app/kibana#/visualize/create?type=table&indexPattern=customers&_g=()&_a=(filters:!(),linked:!f,query:(query_string:(analyze_wildcard:!t,query:'*')),uiState:(vis:(params:(sort:(columnIndex:!n,direction:!n)))),vis:(aggs:!((enabled:!t,id:'1',params:(),schema:metric,type:count),(enabled:!t,id:'2',params:(field:category.keyword,order:desc,orderBy:_term,size:2),schema:bucket,type:terms)),listeners:(),params:(perPage:10,showMeticsAtAllLevels:!f,showPartialRows:!f,showTotal:!f,sort:(columnIndex:!n,direction:!n),totalFunc:sum),title:'CategoryTable',type:table))

在UI中,我能够使用关键字术语过滤器分割行

下面是一个让你开始的url

该调用将创建一个数据表,按计数聚合,并按类别关键字项拆分行

http://localhost:5601/app/kibana#/visualize/create?type=table&indexPattern=customers&_g=()&_a=(filters:!(),linked:!f,query:(query_string:(analyze_wildcard:!t,query:'*')),uiState:(vis:(params:(sort:(columnIndex:!n,direction:!n)))),vis:(aggs:!((enabled:!t,id:'1',params:(),schema:metric,type:count),(enabled:!t,id:'2',params:(field:category.keyword,order:desc,orderBy:_term,size:2),schema:bucket,type:terms)),listeners:(),params:(perPage:10,showMeticsAtAllLevels:!f,showPartialRows:!f,showTotal:!f,sort:(columnIndex:!n,direction:!n),totalFunc:sum),title:'CategoryTable',type:table))

这张桌子不合适吗?结果如何?我更新了答案,加入了kibana的起始url。。。这更接近你需要的吗?这没有给你合适的桌子吗?结果如何?我更新了答案,加入了kibana的起始url。。。这更接近你需要的吗?谢谢你的回答。为了避免误解,我用索引描述更新了问题。实际上没有数组数据类型(这似乎是
嵌套的
类型有用的情况)。。。通过更改,我看不出您的代码有任何问题。你得到了什么结果?请给我几分钟时间安装堆栈,我将设置您的场景我在问题中输入的搜索查询给出了预期的结果,但我的问题是能否在Kibana/Visualize中重现该结果。我正在使用您的数据集玩可视化工具。似乎您要使用拆分行。。我不确定这在json中看起来如何,但它会根据类别正确地分割数据。关键字按类别分割数据以获得文档数量是可以的。问题是如何获取emal不为null、年龄不为null、地址不为null的文档的总数(请参见问题中的表格示例)。请点击Thx以获取答案。为了避免误解,我用索引描述更新了问题。实际上没有数组数据类型(这似乎是
嵌套的
类型有用的情况)。。。通过更改,我看不出您的代码有任何问题。你得到了什么结果?请给我几分钟时间安装堆栈,我将设置您的场景我在问题中输入的搜索查询给出了预期的结果,但我的问题是能否在Kibana/Visualize中重现该结果。我正在使用您的数据集玩可视化工具。似乎您要使用拆分行。。我不确定这在json中看起来如何,但它会根据类别正确地分割数据。关键字按类别分割数据以获得文档数量是可以的。问题是如何获取emal不为null、年龄不为null、地址不为null的文档的总数(请参见问题中的表格示例)。