我正在Elasticsearch中收集数据并在Kibana中进行可视化。我的数据包含每个条目可变数量的字段,并且我正在寻找生成一个直方图来跟踪每个条目的字段数量。例如,这是我的两条数据
{
"extensions": {
"@app/default-preset": "^2.2.0",
"@app/redux": "^2.0.0",
"@app/jest-plugin": "latest",
"@app/next": "^2.0.0",
"@app/cli": "latest",
"@app/log": "^2.2.2",
"@app/auth": "^2.0.0",
"@app/intl": "^3.0.0"
}
}
{
"extensions": {
"@app/default-preset": "^2.2.0",
"@app/mocha-plugin": "latest",
"@app/redux": "^2.0.0",
"@app/cookies": "^2.0.0",
"@app/next": "^2.0.0",
"@app/intl-plugin": "^3.0.0",
"@app/log": "^2.0.0",
"@app/cli": "latest",
"@app/auth": "^2.0.0",
"@app/intl": "^3.1.1"
}
}
因此,对于第一个,我想要值7
,对于第二个,我想要值10
。更好的办法是跟踪最常见的扩展,但这是一个单独的问题。我已经尝试为此创建脚本字段,但失败了。在Javascript中,该名称为Object.keys(extensions).length
,但我不知道如何使用painless
语言来做到这一点。
答案 0 :(得分:0)
类似以下的方法应该起作用:
GET <your_index>/_search
{
"query": {
"match_all": {}
},
"script_fields": {
"doc_field_count": {
"script": "doc['extensions'].size()"
}
}
}
要计算流行的名称,建议您创建另一个脚本字段,您可以在其中使用 .keySet()方法获取扩展名作为Set。稍后,您可以使用聚合分析新创建的...