Kibana 和 groovy 脚本

Kibana and groovy scripting

我正在寻找一种在 Kibana 上计算比率的方法。经过多次研究,我发现了这种方式: 在可视化中使用 "JSON Input" 功能。

我的所有信息都在一个索引中,有两种类型的文件(引导和重启)。 我正在寻找计算启动类型文档数量的脚本,对于重新启动类型相同,然后将第二个除以第一个。 听起来很容易,但经过我的研究,我没有找到任何方法来获得它,而且我不习惯groovy足够自己做。

我发现了很多操作文档值的方法(doc['mydocname'].values 等),但对类型一无所知。

提前致谢。

编辑:我试过了

{
"aggs" : {
    "boots_count" : { "value_count" : { "_type" : "boots" } }
}

} 这应该计算索引中的字段数(这里是字段_type)。但是当我在可视化中将它放入 "JSON Input" 时,会导致错误:

错误:对 Elasticsearch 的请求失败:{"error":"SearchPhaseExecutionException[Failed to execute phase [query], all shards failed; shardFailures {[BbXJ0O6tRxa_OcyBfYCGJQ][informationbe][0]: SearchParseException[[informationbe][0]: from[-1],size[0]: Parse Failure [Failed to parse source [{\"size\":0,\"aggs\":{\"2\":{\"terms\":{\"field\":\"@sitePoste\",\"size\":5,\"order\":{\"1\":\"desc\"}},\ "aggs\":{\"1\":{\"avg\":{\"script\":\"0\",\"lang\":\"expression\",\ "ratio\":{\"boots_count\":{\"value_count\":{\"_type\":\"boots\"}}}}}}}}

我错了。但是在哪里?

EDIT2:另一方面,我正在尝试脚本化字段,使用 lucene 表达式进行类似这样的操作:

doc['_type:boots'].count / doc['_type:reboots'].count

但它没有更多的工作,我对 "doc['_type:boots']" 部分很有信心,我想问题出在 "XXX.count" 部分。

经过多次尝试,我越来越明白它是如何工作的。默认脚本字段范围在文档上,而不是在整个索引上,所以我无法从其中的文档对索引的整个值进行计数操作。 我正在寻找解决方法,如果发现有趣的东西,我会 post 它。

我终于解决了我的问题:

我添加了一个脚本字段,如果文档的类型是boots,脚本字段= 1,否则为0。然后我创建了一个只包含boots和reboots文档的搜索(过滤器_type:boots _type:reboots) 并计算指标中脚本字段的平均值。

一切正常!