Добавление поля со значением, отличным от указанного в отображении

Если я добавляю новое строковое поле в документ, то автоматически создается его сопоставление, и здесь это строка, которая в порядке:

curl -XPOST http://localhost:9200/jakis/typ -d '{"imie": "John"}'

результат:

{
  "ok": true,
  "_index": "jakis",
  "_type": "typ",
  "_id": "GY5AYdaVRH-Vg-XcBQzWYw",
  "_version": 1
}

curl -XGET http://localhost:9200/jakis/_mapping

результат:

{
  "jakis": {
    "typ": {
      "properties": {
        "imie": {
          "type": "string"
        }
      }
    }
  }
}

Однако если я добавлю поле с тем же именем, что и это, которое уже присутствует в отображении, но другого типа (в отображении это строка, здесь я добавляю целое число), то Elasticsearch с радостью добавляет новый документ, но новое отображение для целочисленного поля не помещается в тип отображение:

curl -XPOST http://localhost:9200/jakis/typ -d '{"imie": 2}'      

результат:

{
  "ok": true,
  "_index": "jakis",
  "_type": "typ",
  "_id": "zLpMl5_RSTiceFFG31mj6Q",
  "_version": 1
}

curl -XGET http://localhost:9200/jakis/typ/_mapping

результат:

{
  "typ": {
    "properties": {
      "imie": {
        "type": "string"
      }
    }
  }
}

Вопрос в том, будет ли это поле добавлено как целое число или оно будет преобразовано в строку? Есть ли способ сообщить об этом как об ошибке?

1 ответ

Решение

Он преобразует число 2 в строку "2". Единственное время, когда он генерирует исключение, это когда нет подходящего преобразователя типа или когда он не может выполнить преобразование (например, добавив большое целое в поле целого числа)

Другие вопросы по тегам