# MapperParsingException: failed to parse geo_point field [location] - latitude [91.0] must be in range [-90.0, 90.0]

- **ID:** `elasticsearch/geo-point-outside-bounds`
- **Domain:** elasticsearch
- **Category:** data_error
- **Verification:** ai_generated
- **Fix Rate:** 92%

## Root Cause

A geo_point field contains a latitude or longitude value outside the valid geographic range.

## Version Compatibility

| Version | Status | Introduced | Deprecated |
|---------|--------|------------|------------|
| elasticsearch 7.10.0 | active | — | — |
| elasticsearch 8.5.0 | active | — | — |
| elasticsearch 8.11.0 | active | — | — |

## Workarounds

1. **Clean the source data before indexing: filter out records where latitude is not between -90 and 90, e.g., using a Logstash mutate filter: filter { mutate { convert => ["latitude", "float"] } if [latitude] < -90 or [latitude] > 90 { drop {} } }** (95% success)
   ```
   Clean the source data before indexing: filter out records where latitude is not between -90 and 90, e.g., using a Logstash mutate filter: filter { mutate { convert => ["latitude", "float"] } if [latitude] < -90 or [latitude] > 90 { drop {} } }
   ```
2. **Use a pipeline with a script processor to validate and correct coordinates: PUT _ingest/pipeline/geo_validate { "processors": [ { "script": { "source": "if (ctx.latitude < -90 || ctx.latitude > 90) { ctx.latitude = null }" } } ] }** (90% success)
   ```
   Use a pipeline with a script processor to validate and correct coordinates: PUT _ingest/pipeline/geo_validate { "processors": [ { "script": { "source": "if (ctx.latitude < -90 || ctx.latitude > 90) { ctx.latitude = null }" } } ] }
   ```
3. **Set ignore_malformed to true on the geo_point field in the mapping, then filter out malformed documents after indexing using a query.** (70% success)
   ```
   Set ignore_malformed to true on the geo_point field in the mapping, then filter out malformed documents after indexing using a query.
   ```

## Dead Ends

- **** — This breaks geo queries and aggregations, and loses spatial functionality. (80% fail)
- **** — This hides the data quality issue and may cause data loss without alerting the user. (50% fail)
- **** — ignore_z_value only ignores altitude, not latitude/longitude range violations. (90% fail)
