2017-10-20 2 views
0

Ist es möglich, eine max- oder min-Aggregation für ein geo_point-Feld zu verwenden?Verwenden Sie die max/min-Aggregation für einen geo_point-Feldtyp

Ich habe versucht, direkt auf meine koordinieren Eigenschaft auf max die vom Typ ist geo_point

{ 
    "size": 0, 
    "aggs" : { 
     "max_lat" : { "max" : { "field" : "coordinate" } } 
    } 
} 

dies ein verständlicherweise zurück ClassCastException und so habe ich versucht, die Abfrage direkt auf den lat oder lon Felder coordinate laufen die sind vom Typ doppelt.

{ 
    "size": 0, 
    "aggs" : { 
     "max_lat" : { "max" : { "field" : "coordinate.lat" } }, 
     "max_lon" : { "max" : { "field" : "coordinate.lon" } } 
    } 
} 

Jetzt kann ich die ClassCastExcxeption nicht erhalten und die Abfrage gibt eine 200 jedoch die Aggregationen null sind.

Antwort:

{ 
    "aggregations": { 
     "max_lat": { 
      "value": null 
     }, 
     "max_lon": { 
      "value": null 
     } 
    } 
} 

Mit Elasticsearch v1.7

Antwort

0

Sie können folgende Skript Aggregationen verwenden:

{ 
    "size": 0, 
    "aggs": { 
    "min_lat": { "min": { "script": "doc['coordinate'].lat" } }, 
    "max_lat": { "max": { "script": "doc['coordinate'].lat" } }, 
    "min_lon": { "min": { "script": "doc['coordinate'].lon" } }, 
    "max_lon": { "max": { "script": "doc['coordinate'].lon" } } 
    } 
} 

Ich bin nicht sicher, wie Sie die Ergebnisse verwenden, aber die Folgendes kann auch hilfreich sein, um die Verwendung eines Skripts zu vermeiden:

"viewport": { "geo_bounds": { "field": "coordinate" } } 
"centroid": { "geo_centroid": { "field": "coordinate" } } 
Verwandte Themen