es映射参数--coerce参数

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. 文档1的number_one字段被转换成了整数10
  2. 文档2因为在number_two字段上将coerce禁用了,所以索引该文档被es拒绝了,并且会抛出一个异常(这个行为可以通过设置ignore_malformed参数来改变)

猜你喜欢

转载自blog.csdn.net/weixin_42237702/article/details/107597790