#elasticsearch #kibana #elasticsearch-painless
Вопрос:
Я создаю наблюдатель в 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 amp;amp; 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"
}
},
Ответ №1:
Поэтому я понял это, покопавшись в дополнительной документации.
Я неправильно объявлял свои списки. Чтобы объявить список, он должен быть в формате, как показано ниже.
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 amp;amp; 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 ];""",