请问Elasticsearch中, kibana 可视化 ,能输出 a/b 这种公式吗?现在使用的 都是 某一列的sum distinct 什么的,能操作两列吗?
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
在Kibana中,使用可视化功能(Visualize)可以对Elasticsearch中的数据进行多种聚合操作。针对您的问题,是否可以通过Kibana实现类似 a/b
的公式计算,答案是肯定的,但需要借助Kibana的脚本化字段(Scripted Fields)或使用高级聚合功能来完成。
以下是具体实现方法:
创建脚本化字段:
a/b
的计算结果。doc['a'].value / doc['b'].value
其中,a
和 b
是您索引中的两个字段名称。
步骤:
a_div_b
),并在脚本框中输入上述脚本。使用脚本化字段进行可视化:
a_div_b
,并应用所需的聚合方式(如平均值、求和等)。如果您希望直接在Kibana的可视化中完成 a/b
的计算,可以使用 Bucket Script Aggregation(桶脚本聚合)。此方法适用于更复杂的场景,且无需提前创建脚本化字段。
前提条件:
a
和 b
,并且这些字段的值可用于计算。步骤:
a
,并设置聚合方式为 Sum
。b
,并设置聚合方式为 Sum
。params.a_sum / params.b_sum
其中,params.a_sum
和 params.b_sum
分别对应前面定义的 a
和 b
的聚合结果。
a
和 b
的数据类型为数值型(如 integer
或 float
)。如果字段类型为 text
,需要先将其映射为 keyword
或数值类型。b=0
的判断,以避免除零错误。例如:
if (doc['b'].value == 0) { return 0; } else { return doc['a'].value / doc['b'].value; }
通过上述两种方法,您可以在Kibana中实现类似 a/b
的公式计算: 1. 使用脚本化字段预先定义计算逻辑。 2. 使用Bucket Script Aggregation在可视化中动态计算。
根据实际需求选择合适的方法即可完成两列数据的操作与可视化展示。