Ich habe, wie nachstehend unter Elasticsearch Index viele Dokumente: Datum Histogramm/Bereich Aggregation auf mehreren Feldern machen und das Ergebnis in einer anderen Sammlung/indexElasticsearch wie Summenwerte nach der Aggregation Ergebnis
{
"_index": "f2016-07-17",
"_type": "trkvjadsreqpxl.gif",
"_id": "AVX2N3dl5siG6SyfyIjb",
"_score": 1,
"_source": {
"time": "1468714676424",
"meta": {
"cb_id": 25681,
"mt_id": 649,
"c_id": 1592,
"revenue": 2.5,
"mt_name": "GMS-INAPP-EN-2.5",
"c_description": "COULL-INAPP-EN-2.5",
"domain": "wv.inner-active.mobi",
"master_domain": "649###wv.inner-active.mobi",
"child_domain": "1592###wv.inner-active.mobi",
"combo_domain": "25681###wv.inner-active.mobi",
"ip": "52.42.87.73"
}
}
}
Ich möchte . So konnte ich doc_count Summe mit Abfrage/Aggregation zwischen Stunden Bereich machen.
Die Aggregation ist:
{
"aggs": {
"hour":{
"date_histogram": {
"field": "time",
"interval": "hour"
},
"aggs":{
"hourly_M_TAG":{
"terms":{
"field":"meta.mt_id"
}
}
}....
}
}
}
Das Ergebnis wie erwartet:
"aggregations": {
"hour": {
"buckets": [
{
"key_as_string": "2016-07-17T00:00:00.000Z",
"key": 1468713600000,
"doc_count": 94411750,
"hourly_M_TAG": {
"doc_count_error_upper_bound": 1485,
"sum_other_doc_count": 30731646,
"buckets": [
{
"key": 10,
"doc_count": 10175501
},
{
"key": 649,
"doc_count": 200000
}....
]
}
},
{
"key_as_string": "2016-07-17T01:00:00.000Z",
"key": 1468717200000,
"doc_count": 68738743,
"hourly_M_TAG": {
"doc_count_error_upper_bound": 2115,
"sum_other_doc_count": 22478590,
"buckets": [
{
"key": 559,
"doc_count": 8307018
},
{
"key": 649,
"doc_count" :100000
}...
Nehmen wir an, dass ich die Antwort analysieren und versuchen, das Ergebnis in anderen Index/Sammlung zu speichern.
Meine Frage
Was ist der beste Weg, um die aggregierten Ergebnisse zu speichern, so kann ich andere Abfrage/Aggregation machen, dass die „doc_count“ zwischen verschiedener Stunde Bereich fasst?
zum Beispiel: zwischen "2016-07-17T00: 00: 00.000Z" - "2016-07-17T01: 00: 00.000Z" wollen die Gesamt doc_count auf jeder Taste
erwartetes Ergebnis sehen:
{
"range_sum": {
"buckets": [
{
"key": 649,
"doc_count": 300000 // (200000+100000)
},
{
"key": 588,
"doc_count": 2928548 // ... + ...
}....
]
}
}
Danke!
Mic987: Ich habe klar das erwartete Ergebnis hinzugefügt. Ich muss die Ergebnisse speichern, weil die Anfrage vom Benutzer von jeder Stunde zu jeder Stunde sein kann, ein anderes Problem ist, dass ich keinen Speicher übrig habe, also aggregiere ich die Daten täglich, ohne diese Aggregation nach 1 Tag, Speicherplatzproblem würde auftreten . – VitalyT
Ich habe meine Antwort aktualisiert, hoffentlich ist es von Nutzen, ich denke da gibt es viele verschiedene Möglichkeiten, wie du erreichen kannst, was du willst. – Mic987