Hi all,
I created a script query and now I want to trigger an email if the count is more than 0.
GET /xpto_xpto/_search
{
"_source": false,
"track_total_hits": false,
"size": 0,
"query": {
"bool": {
}
},
"aggs": {
"filter_folder_ids_not_in_dossier": {
"scripted_metric": {
"init_script": """
// Inicializa listas para folderIds e Dossiers
state.folderIds = [];
state.dossiers = [];
""",
"map_script": """
// Adiciona valores de folderId
if (doc.containsKey('folderId.keyword') && doc['folderId.keyword'].size() > 0) {
def folderIdValue = doc['folderId.keyword'].value;
if (!state.folderIds.contains(folderIdValue)) {
state.folderIds.add(folderIdValue);
}
}
// Adiciona valores de Dossier
if (doc.containsKey('dossier') && doc['dossier'].size() > 0) {
def dossierValue = doc['dossier'].value;
if (!state.dossiers.contains(dossierValue)) {
state.dossiers.add(dossierValue);
}
}
""",
"combine_script": """
// Combina todos os valores em um único estado
return state;
""",
"reduce_script": """
// Compara os valores de folderIds com os de Dossiers
def folderIdsNotInDossiers = [];
for (folderId in states[0].folderIds) {
if (!states[0].dossiers.contains(folderId)) {
folderIdsNotInDossiers.add(folderId);
}
}
// Retorna apenas o count
//return folderIdsNotInDossiers.size();
return ['folderIds': folderIdsNotInDossiers, 'count': folderIdsNotInDossiers.size()];
"""
}
}
}
}
The result it's perfect:
But when I create the Rule Elasticsearch query | DSL and run the "Test query" the count it's not 3 but 12, all the events:
How can I force the rule to check my aggregation count?