coerce
数据并不总是干净的。这取决于它是如何产生的,一个数字可能在JSON主体中呈现为一个真正的JSON数字,例如5,但它也可能呈现为一个字符串,例如“5”。再或者一个应该是整数的数字可能会被呈现为浮点数,例如5.0,甚至"5.0"。
强制尝试清除脏值,以符合字段的数据类型。例如:
- 字符串将被强制为数字
- 浮点数将被截断为整数
例如:
PUT my_index
{
"mappings": {
"properties": {
"number_one": {
"type": "integer"
},
"number_two": {
"type": "integer",
"coerce": false
}
}
}
}
PUT my_index/_doc/1 ----1----
{
"number_one": "10"
}
PUT my_index/_doc/2 ----2----
{
"number_two": "10"
}
- 文档1的
number_one
字段被转换成了整数10- 文档2因为在
number_two
字段上将coerce
禁用了,所以索引该文档被es拒绝了,并且会抛出一个异常(这个行为可以通过设置ignore_malformed
参数来改变)