Elasticsearch couldn't validate latitude/ longitude values
Elasticsearch 查询经纬度报错 couldn’t validate latitude/ longitude values
应用服务返回错误日志,如下:
1 | {"error":{"root_cause":[{"type":"query_shard_exception","reason":"couldn't validate latitude/ longitude values","index_uuid":"xxx","index":"xxxx"}],"type":"search_phase_execution_exception","reason":"all shards failed","phase":"query","grouped":true,"failed_shards":[{"shard":0,"index":"xxxx","node":"xxxx","reason":{"type":"query_shard_exception","reason":"couldn't validate latitude/ longitude values","index_uuid":"xxxx","index":"xxxxxx","caused_by":{"type":"query_validation_exception","reason":"Validation Failed: 1: [geo_distance] center point latitude is invalid: 116.629758;"}}}]},"status":400} |
es服务错误日志,如下:
1 | org.elasticsearch.transport.RemoteTransportException: [indices:data/read/search[phase/query]] |
原因调查:
因为测试人员经纬度写错导致,需要使用elasticsearch 工具类GeoUtils check经纬度的范围。
org.elasticsearch.common.geo.GeoUtils#isValidLongitude
1 | /** Maximum valid latitude in degrees. */ |
org.elasticsearch.common.geo.GeoUtils#isValidLatitude
1 | /** Returns true if longitude is actually a valid longitude value. */ |