我已经得到了Elasticsearch的这个自定义查询:
{
"query": { "match_all": {} },
"size": 0,
"aggs": {
"hour": {
"histogram": {
"script": "doc['startTime'].date.hourOfDay",
"interval": 1,
"min_doc_count": 0,
"extended_bounds": {
"min": 0,
"max": 23
},
"lang":"groovy"
}
}
}
}
当通过postman运行时,给出以下结果(不完整):
"aggregations": {
"hour": {
"buckets": [
{
"key": 0,
"doc_count": 18359
},
{
"key": 1,
"doc_count": 18361
},
{
"key": 2,
"doc_count": 18183
},
{
"key": 3,
"doc_count": 19729
},
问题是,现在我想在Kibana中想象这些桶。目标是显示24个栏,每个栏都有各自的doc_count。
如果我把查询放到搜索栏中,我得到了错误:
Visualize: [filtered] query does not support [query]
.
进入可视化选项卡并添加聚合类型的x轴& &;日期直方图& &;字段& &;starttime & &;(这是我的日期字段),间隔自动和以下json:
{
"histogram": {
"script": "doc['startTime'].date.hourOfDay",
"interval": 1,
"min_doc_count": 0,
"extended_bounds": {
"min": 0,
"max": 23
},
"lang":"groovy"
}
}
也会产生一个错误: Visualize: Unknown key for a START_OBJECT in [2]: [histogram].
在过去的3个小时里一直在阅读不同的解决方案,没有偶然发现任何可行的解决方案。
更多信息:
"version": {
"number": "2.3.3",
"build_hash": "218bdf10790eef486ff2c41a3df5cfa32dadcfde",
"build_timestamp": "2016-05-17T15:40:04Z",
"build_snapshot": false,
"lucene_version": "5.5.0"
}
- Kibana版本:4.5.0
- Kibana build: 9889
你可以在Kibana中使用'JSON Input'选项:
- 创建新的竖条可视化
- 在XAxis下,选择一个"直方图"可视化,并从列表中选择任何字段
- 选择任意间隔
- 点击"高级"插入符号,在 文本框中输入以下内容
{
"script": "doc['startTime'].date.hourOfDay",
"interval": 1,
"min_doc_count": 0,
"extended_bounds": {
"min": 0,
"max": 23
},
"lang": "groovy"
}
另一个选项是创建一个新的脚本字段并使用它:
- 进入设置->点击左侧的索引模式
- 选择'Scripted fields'选项卡(就在' fields'选项卡旁边)
- 点击"添加脚本字段"
- 将字段命名为
startTime_hourofday
- 在脚本输入下设置:
doc['startTime'].getHourOfDay()
- 现在您可以创建一个新的可视化,就像您尝试通过简单地从字段列表中选择
startTime_hourofday
来做任何特殊或自定义JSON输入一样。
这个答案的方法对我来说是有效的,但是我必须稍微改变JSON输入以使它适用于我的Kibana版本。最初我看到这个错误信息:
[1:19 9] [histogram] unknown field [lang]
Kibana版本: 7.16.1
ElasticSearch version: 8.2
{
"script": "doc['startTime'].value.getHour()",
"interval": 1,
"min_doc_count": 0,
"extended_bounds": {
"min": 0,
"max": 23
}
}