Добавление поля со значением, отличным от указанного в отображении
Если я добавляю новое строковое поле в документ, то автоматически создается его сопоставление, и здесь это строка, которая в порядке:
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". Единственное время, когда он генерирует исключение, это когда нет подходящего преобразователя типа или когда он не может выполнить преобразование (например, добавив большое целое в поле целого числа)