是否可以在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
答案 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" } }