3

Nach elastischen docs passend: https://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations-bucket-datehistogram-aggregation.htmlElasticsearch wie Anzeige aller Dokumente Datumsbereich Aggregation

Frage:

Wie Datumsbereich Aggregation machen und alle Dokumente, die nur zu den relevanten Zeitpunkt Eimer passen nicht die doc_count.

Die Aggregation:

{ 
    "aggs" : { 
     "articles_over_time" : { 
      "date_histogram" : { 
       "field" : "date", 
       "interval" : "1M", 
       "format" : "yyyy-MM-dd" 
      } 
     } 
    } 
} 

Antwort:

 { 
      "aggregations": { 
       "articles_over_time": { 
        "buckets": [ 
         { 
          "key_as_string": "2013-02-02", 
          "key": 1328140800000, 
          "doc_count": 1 
         }, 
         { 
          "key_as_string": "2013-03-02", 
          "key": 1330646400000, 
          "doc_count": 2 //how display whole json ?? 

        [ .. Here i want to display 
          all document with array based 
          NOT only doc_count:2.......... ] 

         }, 
         ... 
        ] 
       } 
      } 
     } 

Vielleicht brauche ich sonst einige Unter Aggregation oder etwas zu tun?

Irgendwelche Ideen?

Antwort

2

Sie müssen top_hits Sub-Aggregation auf date-histogram Aggregation durchführen. Alle Optionen können von here gelesen werden.

Ihre letzte Aggregation wie diese

{ 
    "aggs": { 
    "articles_over_time": { 
     "date_histogram": { 
     "field": "date", 
     "interval": "1M", 
     "format": "yyyy-MM-dd" 
     }, 
     "aggs": { 
     "documents": { 
      "top_hits": { 
      "size": 10 
      } 
     } 
     } 
    } 
    } 
} 
0

Wie, was Sumit sagt aussehen würde, aber ich denke, was Sie wirklich wollen, ist ein Filter mit einem Datumsbereich zu erstellen:

https://www.elastic.co/guide/en/elasticsearch/reference/2.3/query-dsl-range-query.html#ranges-on-dates

Auf diese Weise filtern Sie Dokumente aus, die nicht im Datumsbereich liegen, und behalten nur die richtigen Dokumente. Dann können Sie mit den Ergebnissen alles machen, was Sie wollen.

+0

Jettro Coenradie: Kann Filter geben mir eine Fähigkeit, jedes Dokument zu ihren Bucket-Bereich (zum Beispiel .. 1. Eimer: [1/1/2016/00: 00 - 1/1/2016/01: 00] - -> {[alle relevanten Dokumente] ..}, ...), etc? – VitalyT

+0

Ah, wenn Sie mehrere Zeitbereiche haben wollen, als Sie die oberen Treffer benötigen, antworten Sie von Sumit. Das Datumshistogramm zusammen mit den oberen Treffern. Vorsicht, es gibt keine Möglichkeit, Seitenumbrüche mit Top-Hits zu erstellen. Es ist auch nicht geeignet, alle Dokumente zu erhalten, wenn es zu viele von ihnen gibt. –

+0

Jettro Coenradie: Ohh .. Ja, es ist genau mein Fall, ich habe tausend von Dokumenten auf jedem Eimer, mein letzter Zweck ist über einige Felder auf jedem Dokument im Eimer iterieren und JDBC (externer mysql db-Aufruf) ausführen, also zurück Wert von db wird zurück zum Dokument .. oder zum neuen Dokument :) – VitalyT

Verwandte Themen