ElasticSearch Datum Auswahl-Abfrage-aggregation mit Hilfe der Java-API
Hallo ich habe das Dokument für die cpu-Auslastung mit date_time Feld drin. Nun würde ich gerne erfahren, avg cpu-Auslastung für den Datumsbereich. Ich komme mit der folgenden Lösung. Bitte lassen Sie mich wissen, wenn es irgendwelche vorab-oder der bessere Ansatz ist, wie ich bin neu auf Elastic Search.
client.prepareSearch("myindex").
setTypes("mytype").
setQuery(
QueryBuilders.filteredQuery(QueryBuilders.matchAllQuery(),
FilterBuilders.andFilter(FilterBuilders.termFilter("server","x"),
FilterBuilders.rangeFilter(date_time).from(fdate).to(tdate)))).get()
Nun obige Abfrage gibt mir wie erwartet Unterlagen die fällt innerhalb von/bis Datumsbereich. Nun, was ich versuche zu tun ist, ich finde alle einzigartigen Daten aus diesen Dokumenten mit SearchHits
und ich speichern Sie diese einzigartige Kombinationen von Daten in einer HashSet
und jetzt für alle Elemente innerhalb dieses HashSet
ich führen Sie die folgende Abfrage
client.prepareSearch("myindex").
setTypes("mytype").
setQuery(
QueryBuilders.filteredQuery(QueryBuilders.matchAllQuery(),
FilterBuilders.andFilter(FilterBuilders.termFilter("server","x"),
FilterBuilders.termFilter(date_time),"dateinputfromloop"))).
addAggregation(AggregationBuilders.avg("cpu_agg").field("cpu_time"))
.get()
Nun obige Abfrage funktioniert einwandfrei und gibt die Ausgabe, die ich bekommen avg-CPU für jedes Datum-Zeit-Kombination. Ich Frage mich, ob diese besser ist-Ansatz führe ich vor der Abfrage in einer Schleife für alle Datum-Kombinationen. Bitte Anleitung danke im Voraus.
- Also, wie ist dein date gespeichert ist? Ich meine, ist es mm/TT/JJ oder mit der Zeit, Wie Sie finden, wenn Datum einzigartig ist?
- Hi danke für die Antwort. Datum ist gespeichert in ISO-Datumsformat. Kann es ähnliche/doppelte Datum pro Dokument, so bin ich das speichern in HashSet und dann, nachdem ich haben einzigartige date-Kombinationen, eins nach dem anderen ich bin brennen Abfrage zu bekommen avg-cpu für jedes Datum.
Du musst angemeldet sein, um einen Kommentar abzugeben.
So, ich denke, man kann Daten für den täglichen,
Sie können date_histogram aggregation für diese. So, dass Ihre zwei Wunsch getan werden kann, im einzelnen Anforderung.
Hier ist der code,
Ändern Sie können das Intervall in dateHistogram aggregation um Ihren Bedarf zu passen.
Wenn Sie möchten, werden, basierend auf eindeutigen (in Millisekunden auch), dann kannst du Sie verwenden Begriffe aggregation-Datum anstelle des Datums Histogramm-aggregation.
Begriffe Aggregation
Hoffe, das hilft, Danke.