Painless Script Elasticsearch Watcher 问题
Issue with Painless Script Elasticsearch Watcher
我正在 elasticsearch 中创建一个观察器,当我们在索引中有 10 分钟没有新条目或事件时报告,通过查看条目中的源字段进一步拆分。
我只获取索引的最后 10 分钟,并查看存储桶中不存在哪个来源。
为此,我首先创建一个包含我们收到的所有源类型的列表,然后根据返回的存储桶键创建一个列表。然后我想比较列表以查看缺少哪个列表,然后将其传递到消息中。
我收到 for 循环的一般错误。任何反馈都对弹性和无痛非常有帮助,所以可能是我错过的简单的东西。
"transform": {
"script": {
"source": """String vMessage = 'Clickstream data has been loaded although there are no iovation records from the following source in the last 10 mins:
';if(ctx.payload.clickstream.hits.total > 0 && ctx.payload.iovation.aggregations.source.buckets.size() < 3) { source_list = ['wintech', 'login', 'clickstream']; source_array = new String[] for (source in ctx.payload.iovation.aggregations.source.buckets){ source_array.add(source.key); } for (key in source_list){ if (!source_array.contains(key){ vMessage += '<ul><li>' + key + '</li></ul>';} } }return [ 'message': vMessage ];""",
"lang": "painless"
}
},
所以我在翻阅了更多文档后弄明白了。
我错误地声明了我的列表。要声明一个列表,它需要采用如下格式。
List new_list = new ArrayList();
这解决了我的问题,现在转换脚本按预期工作。
"""String vMessage = 'Clickstream data has been loaded although there are no iovation records from the following source in the last 10 mins:
';if(ctx.payload.clickstream.hits.total > 0 && ctx.payload.iovation.aggregations.source.buckets.size() < 3) { List source_list = new ArrayList(['wintech', 'login', 'clickstream']); List source_array = new ArrayList(); for (source in ctx.payload.iovation.aggregations.source.buckets){ source_array.add(source.key); } for (key in source_list){ if (!source_array.contains(key)){ vMessage += '<ul><li>' + key + '</li></ul>';} } }return [ 'message': vMessage ];""",
我正在 elasticsearch 中创建一个观察器,当我们在索引中有 10 分钟没有新条目或事件时报告,通过查看条目中的源字段进一步拆分。
我只获取索引的最后 10 分钟,并查看存储桶中不存在哪个来源。
为此,我首先创建一个包含我们收到的所有源类型的列表,然后根据返回的存储桶键创建一个列表。然后我想比较列表以查看缺少哪个列表,然后将其传递到消息中。
我收到 for 循环的一般错误。任何反馈都对弹性和无痛非常有帮助,所以可能是我错过的简单的东西。
"transform": {
"script": {
"source": """String vMessage = 'Clickstream data has been loaded although there are no iovation records from the following source in the last 10 mins:
';if(ctx.payload.clickstream.hits.total > 0 && ctx.payload.iovation.aggregations.source.buckets.size() < 3) { source_list = ['wintech', 'login', 'clickstream']; source_array = new String[] for (source in ctx.payload.iovation.aggregations.source.buckets){ source_array.add(source.key); } for (key in source_list){ if (!source_array.contains(key){ vMessage += '<ul><li>' + key + '</li></ul>';} } }return [ 'message': vMessage ];""",
"lang": "painless"
}
},
所以我在翻阅了更多文档后弄明白了。
我错误地声明了我的列表。要声明一个列表,它需要采用如下格式。
List new_list = new ArrayList();
这解决了我的问题,现在转换脚本按预期工作。
"""String vMessage = 'Clickstream data has been loaded although there are no iovation records from the following source in the last 10 mins:
';if(ctx.payload.clickstream.hits.total > 0 && ctx.payload.iovation.aggregations.source.buckets.size() < 3) { List source_list = new ArrayList(['wintech', 'login', 'clickstream']); List source_array = new ArrayList(); for (source in ctx.payload.iovation.aggregations.source.buckets){ source_array.add(source.key); } for (key in source_list){ if (!source_array.contains(key)){ vMessage += '<ul><li>' + key + '</li></ul>';} } }return [ 'message': vMessage ];""",