强制
编辑coerce
编辑
数据并不总是干净的。根据数据的生成方式,数字可能在 JSON 主体中以真正的 JSON 数字形式呈现,例如 5
,但也可能以字符串形式呈现,例如 "5"
。或者,应该为整数的数字可能被渲染为浮点数,例如 5.0
,甚至 "5.0"
。
强制尝试清理脏值以适应字段的数据类型。例如
- 字符串将被强制转换为数字。
- 浮点数将被截断为整数值。
例如
response = client.indices.create( index: 'my-index-000001', body: { mappings: { properties: { number_one: { type: 'integer' }, number_two: { type: 'integer', coerce: false } } } } ) puts response response = client.index( index: 'my-index-000001', id: 1, body: { number_one: '10' } ) puts response response = client.index( index: 'my-index-000001', id: 2, body: { number_two: '10' } ) puts response
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" }
coerce
设置值可以使用 更新映射 API 在现有字段上更新。
索引级别默认值编辑
index.mapping.coerce
设置可以在索引级别设置,以在所有映射类型中全局禁用强制。
response = client.indices.create( index: 'my-index-000001', body: { settings: { 'index.mapping.coerce' => false }, mappings: { properties: { number_one: { type: 'integer', coerce: true }, number_two: { type: 'integer' } } } } ) puts response response = client.index( index: 'my-index-000001', id: 1, body: { number_one: '10' } ) puts response response = client.index( index: 'my-index-000001', id: 2, body: { number_two: '10' } ) puts response