在geo_point字段类型上使用max / min聚合

时间:2017-10-20 14:23:45

标签: elasticsearch aggregation

是否可以在geo_point字段上使用最大或最小聚合?

我已尝试将max直接放到geo_point

类型的坐标属性上
{
    "size": 0,
    "aggs" : {
        "max_lat" : { "max" : { "field" : "coordinate" } }
    }
}

这可以理解地返回ClassCastException,因此我尝试直接在lat的{​​{1}}或lon字段中运行查询,这些字段的类型为double。

coordinate

现在我没有收到ClassCastExcxeption,查询返回200,但聚合为空。

响应:

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

使用elasticsearch v1.7

1 个答案:

答案 0 :(得分:0)

您可以使用以下脚本聚合:

{
  "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" } }
  }
}

我不确定您是如何使用结果的,但以下内容也可能有助于避免使用脚本:

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