ignore_malformed
Иногда у вас мало контроля над данными, которые вы получаете. Один пользователь может отправить поле login, которое является date, а другой — поле login, которое является адресом электронной почты.
Попытка индексировать неправильный тип данных в поле по умолчанию вызывает исключение и отклоняет весь документ. Параметр ignore_malformed, если он установлен в значение true, позволяет игнорировать исключение. Неправильное поле не индексируется, но остальные поля в документе обрабатываются нормально.
Например:
PUT my-index-000001
{
"mappings": {
"properties": {
"number_one": {
"type": "integer",
"ignore_malformed": true
},
"number_two": {
"type": "integer"
}
}
}
}
PUT my-index-000001/_doc/1
{
"text": "Some text value",
"number_one": "foo"
}
PUT my-index-000001/_doc/2
{
"text": "Some text value",
"number_two": "foo"
} | В этом документе поле | |
| Этот документ будет отклонен, потому что |
Настройка ignore_malformed в настоящее время поддерживается следующими типами отображения:
- Числовые
-
long,integer,short,byte,double,float,half_float,scaled_float - Дата
-
date - Дата наносекунды
-
date_nanos - Географическая точка
-
geo_pointдля точек широты/долготы - Геофигура
-
geo_shapeдля сложных фигур, таких как многоугольники - IP
-
ipдля адресов IPv4 и IPv6
Значение настройки ignore_malformed можно обновить для существующих полей с помощью API обновления отображения.
Значение по умолчанию на уровне индекса
Настройка index.mapping.ignore_malformed может быть установлена на уровне индекса для глобального игнорирования неправильного содержимого во всех разрешенных типах отображения. Типы отображения, которые не поддерживают данную настройку, проигнорируют ее, если она установлена на уровне индекса.
PUT my-index-000001
{
"settings": {
"index.mapping.ignore_malformed": true
},
"mappings": {
"properties": {
"number_one": {
"type": "byte"
},
"number_two": {
"type": "integer",
"ignore_malformed": false
}
}
}
} | Поле | |
| Поле |
Обработка неправильных полей
Неправильные поля молча игнорируются во время индексирования, когда ignore_malformed включено. В идеале следует сохранять количество документов с неправильным полем, так как запросы к этому полю могут потерять смысл. Elasticsearch упрощает проверку количества документов с неправильными полями с помощью запросов exists,term или terms на специальном поле _ignored.
Ограничения для JSON-объектов
ignore_malformed нельзя использовать со следующими типами данных:
Также нельзя использовать ignore_malformed для игнорирования JSON-объектов, отправленных в поля неправильного типа данных. JSON-объект — это любые данные, заключенные в фигурные скобки "{}" и включающие данные, сопоставленные с вложенными, объектами и типами диапазонов.
Если вы отправите JSON-объект в недопустимое поле, Elasticsearch вернет ошибку и отклонит весь документ независимо от настройки ignore_malformed.
© 2023-2025 Elasticsearch
As of September 2024, Elasticsearch is available under a choice of three licenses: the Server Side Public License (SSPL), the Elastic License, or the AGPLv3 (OSI approved).
Elasticsearch and the Elasticsearch logo are trademarks of Elasticsearch B.V., registered in the U.S. and in other countries.
https://www.elastic.co/guide/en/elasticsearch/reference/7.17/ignore-malformed.html