Spec-Zone.ru › Elasticsearch 7
›Elasticsearch Руководство [7.17] ›Отображение ›Параметры отображения

coerce

Данные не всегда чистые. В зависимости от способа их создания, число может быть представлено в теле JSON как истинное число JSON, например, 5, но также может быть представлено как строка, например, "5". Кроме того, число, которое должно быть целым, может быть представлено как число с плавающей запятой, например, 5.0, или даже "5.0".

Приведение типов пытается очистить некорректные значения для соответствия типу данных поля. Например:

  • Строки будут приведены к числам.
  • Числа с плавающей запятой будут усечены для целочисленных значений.

Например:

PUT my-index-000001
{
  "mappings": {
    "properties": {
      "number_one": {
        "type": "integer"
      },
      "number_two": {
        "type": "integer",
        "coerce": false
      }
    }
  }
}

PUT my-index-000001/_doc/1
{
  "number_one": "10" 
}

PUT my-index-000001/_doc/2
{
  "number_two": "10" 
}

Поле number_one будет содержать целое число 10.

Этот документ будет отклонен, так как приведение типов отключено.

Значение параметра coerce можно обновить для существующих полей с помощью API обновления отображения.

По умолчанию на уровне индекса

Параметр index.mapping.coerce можно установить на уровне индекса, чтобы отключить приведение типов глобально для всех типов отображения:

PUT my-index-000001
{
  "settings": {
    "index.mapping.coerce": false
  },
  "mappings": {
    "properties": {
      "number_one": {
        "type": "integer",
        "coerce": true
      },
      "number_two": {
        "type": "integer"
      }
    }
  }
}

PUT my-index-000001/_doc/1
{ "number_one": "10" } 

PUT my-index-000001/_doc/2
{ "number_two": "10" } 

Поле number_one переопределяет значение на уровне индекса, чтобы включить приведение типов.

Этот документ будет отклонен, так как поле number_two наследует значение приведения типов на уровне индекса.

© 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/coerce.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API