我有一个带有特定字段的 ES 索引,在 Kibana 的控制台开发中通过索引映射显示为:
"spotted_field" : {
"type" : "text"
}
此字段包含仅包含整数的字符串,我无法更改它,所以我想知道如何执行简单的字符串到 int 的转换,以便将整个总和计算为仪表板指标。
我认为在 Canvas 模板中使用 ElasticSearch SQL 可以完成这项工作。在数据控制台中,我从一个简单的开始:
SELECT CONVERT("spotted_field", SQL_INTEGER) AS sum
FROM "my_index"
这个似乎有效,因为预览数据中的一切看起来都很好,所以接下来我尝试了:
SELECT SUM(CONVERT("spotted_field", SQL_INTEGER)) AS sum
FROM "my_index"
但在预览数据中收到此报告的错误:
[essql] > Unexpected error from Elasticsearch: search_phase_execution_exception - all shards failed
此消息可能与格式问题有关...那么我在转换过程中错过了什么?如果字段包含关键字而不是字符串,转换效果会更好吗?
PS:我使用的是 Kibana v 7.17.12 版本
编辑1:我确定函数 CONVERT 有效并返回预期的格式。
长话短说:转换适用于字符串字段(它只有数字),但对于像求和这样的操作,必须将其格式化为关键字。