2017-10-12 2 views
0

Ich habe die folgende Abbildung in Elasticsearch:Wie erkennt man die Anzahl der Tage, die eine Person in einer Stadt passiert?

PUT /traffic-data 
{ 
    "mappings": { 
     "traffic-entry": { 
     "_all": { 
     "enabled": false 
     }, 
     "properties": { 
      "CameraId": { 
      "type":"keyword" 
      }, 
      "VehiclePlateNumber": { 
      "type":"keyword" 
      }, 
      "DateTime": { 
      "type":"date" 
      } 
     } 
     } 
    } 
} 

ich, wie viele Tage pro Monat berechnet werden soll hat ein Fahrzeug geblieben. Ein einzigartiges Fahrzeug wird durch VehiclePlateNumber identifiziert. Also, ich möchte das Ergebnis etwas bekommen:

VehiclePlaneNumber Month StayDays 
111     1  5 
222     1  1 
... 

Wie kann ich benutze es Elasticsearch Abfrage?

Dies ist, was ich versucht:

GET traffic-data/_search? 
{ 
"size": 0, 
    "aggs":{ 
    "by_district":{ 
     "terms": { 
     "field": "VehiclePlateNumber", 
     "size": 100000 
     }, 
     "aggs": { 
     "by_month": { 
      "terms": { 
      "field": "DateTime", 
      "size": 12 
      } 
     } 
     } 
    } 
    } 
} 
+0

Bitte fügen Sie die Beispieldaten für 111, 222 VehiclePlaneNumber zur Analyse ein. –

Antwort

0

Sie Begriffe Aggregation auf Fahrzeug-Kennzeichen tun können dann einen Bezug sub agg auf Monat dann eine Summe sub agg an den Tagen.

Etwas wie:

GET traffic-data/_search 
{ 
"size": 0, 
    "aggs":{ 
    "by_district":{ 
     "terms": { 
     "field": "VehiclePlateNumber", 
     "size": 100000 
     }, 
     "aggs": { 
     "by_month": { 
      "terms": { 
      "field": "DateTime", 
      "size": 12 
      }, 
      "aggs": { 
      "days": { 
       "sum": { 
       "field": "days" 
       } 
      } 
      } 
     } 
     } 
    } 
    } 
} 

Monat sollte ein Skript Feld sein, aber besser wäre es an der Indexzeit zu berechnen.

Das sollte funktionieren.

Oder Sie können Entity Centric Design verwenden und diesen berechneten Wert regelmäßig indizieren. Siehe https://www.elastic.co/elasticon/2015/sf/building-entity-centric-indexes

+0

Nun, ich habe auch sfield 'Month' und' Monthday', die aus 'DateTime' extrahiert werden. Könntest du bitte zeigen, wie man sub aggs an Tagen summiert? – Dinosaurius

Verwandte Themen