Ошибки Elasticsearch версии 7.6 при отсутствии Geoshape - PullRequest
0 голосов
/ 01 мая 2020

У нас есть индекс, который имеет поле типа GeoShape. Если мы делаем запросы, которые включают это поле, а поле отсутствует, мы получаем ошибку:

**Type: illegal_state_exception Reason: "Shape with name [34219995] found but missing geometry field"**

Есть ли способ присвоить значение по умолчанию для поля геоформ, как это можно сделать с другими типами в ситуациях, когда они могут быть нулевыми?

Мы используем следующий запрос: (используя API NEST):

filters.Add(fq => fq.Term(t => t.Field(f => f.LocalityId).Value(34219995)) || fq.GeoShape(g => g.Field("locationShape").Relation(GeoShapeRelation.Within).IndexedShape(f => f.Id(34219995).Index("GeoshapesIndex").Path("geometry")))); 

Если поле в «GeoshapesIndex» отсутствует, мы получаем ошибку.

1 Ответ

0 голосов
/ 01 мая 2020

Добавление "ignore_malformed": true к отображению вашего поля должно предотвратить такие запросы в первую очередь. Обратите внимание, что вам придется переиндексировать, чтобы это вступило в силу.

Во-вторых, попробуйте добавить ignore_unmapped к вашему запросу geo_shape:

GET geoindex/_search
{
  "query": {
    "geo_shape": {
      "ignore_unmapped": true,
      "polygon": {
        "shape": {
          "type": "point",
          "coordinates": [
            0.5,
            0.5
          ]
        },
        "relation": "within"
      }
    }
  }
}
...