L'obiettivo è di creare un indice Elasticsearch con solo i documenti più recenti in gruppi di documenti correlati per tenere traccia dello stato corrente di alcuni contatori e stati di monitoraggio.Inserire i risultati di aggregazione in un indice
Ho realizzato un semplice elasticsearch interrogazione aggregazione:
{
"size": 0,
"aggs": {
"group_by_monitor": {
"terms": {
"field": "monitor_name"
},
"aggs": {
"get_latest": {
"top_hits": {
"size": 1,
"sort": [
{
"timestamp": {
"order": "desc"
}
}
]
}
}
}
}
}
}
gruppi documenti connessi in segmenti e selezionare il documento più recente per ciascun segmento.
Ecco le diverse idee che avevo per ottenere il lavoro fatto:
- utilizzare direttamente la query di aggregazione per spingere i risultati nell'indice, ma non sembra possibile: Is it possible to put the results of an ElasticSearch aggregation back into the index?
- utilizzare il LogstashElasticsearch input plugin per eseguire la query di aggregazione e Elasticsearch output plugin da inserire nell'indice, ma sembra che il plug-in di input guardi solo il campo
hits
e non sia in grado di gestire i risultati di aggregazione: Aggregation Query possible input ES plugin! - utilizzare lo Logstashhttp_poller plugin per ottenere un documento JSON, ma non sembra consentire di specificare un corpo per la richiesta HTTP!
- utilizzare il Logstashexec plugin per eseguire i comandi cURL per ottenere il JSON ma questo sembra piuttosto ingombrante e la mia ultima risorsa.
- utilizzare lo NEST API per creare un'applicazione di base che eseguirà il polling, estrarre i risultati, pulirli e iniettare i documenti risultanti nell'indice di destinazione, ma vorrei evitare di aggiungere un nuovo strumento da mantenere.
Esiste un modo ragionevolmente complesso per realizzare questo?
[Watcher] (https://www.elastic.co/guide/en/watcher/current/index.html)? –
@AndreiStefan Grazie, ma AFAIK Watcher non è d'aiuto per questo caso d'uso. Inoltre non ce l'abbiamo (ancora?) Installato sulla nostra infrastruttura. Per avvisarci usiamo ** ElastAlert ** che fa perfettamente il lavoro. – Pragmateek
Non sto suggerendo Watcher per allertare, ma per essere in grado di [interrogare gli indici] (https://www.elastic.co/guide/en/watcher/current/changing-inputs.html#loading-search-results) a intervalli regolari, esegui alcune [trasformazione di base] (https://www.elastic.co/guide/en/watcher/current/using-transforms.html) sui dati risultanti e riesci a [indicizzare nuovamente in Elasticsearch ] (https://www.elastic.co/guide/en/watcher/current/actions.html#actions-index). –