ignore_malformed
编辑ignore_malformed
编辑
有时您无法完全控制接收到的数据。一个用户可能会发送一个 login
字段,它是一个 date
,而另一个用户发送的 login
字段则是一个电子邮件地址。
默认情况下,尝试将错误的数据类型索引到字段中会引发异常,并拒绝整个文档。如果将 ignore_malformed
参数设置为 true
,则可以忽略该异常。格式错误的字段不会被索引,但文档中的其他字段会正常处理。
例如
response = client.indices.create( index: 'my-index-000001', body: { mappings: { properties: { number_one: { type: 'integer', ignore_malformed: true }, number_two: { type: 'integer' } } } } ) puts response response = client.index( index: 'my-index-000001', id: 1, body: { text: 'Some text value', number_one: 'foo' } ) puts response response = client.index( index: 'my-index-000001', id: 2, body: { text: 'Some text value', number_two: 'foo' } ) puts response
PUT my-index-000001 { "mappings": { "properties": { "number_one": { "type": "integer", "ignore_malformed": true }, "number_two": { "type": "integer" } } } } PUT my-index-000001/_doc/1 { "text": "Some text value", "number_one": "foo" } PUT my-index-000001/_doc/2 { "text": "Some text value", "number_two": "foo" }
以下 映射类型 当前支持 ignore_malformed
设置
可以使用 更新映射 API 更新现有字段上的 ignore_malformed
设置值。
索引级默认值编辑
可以在索引级别设置 index.mapping.ignore_malformed
设置,以便在所有允许的映射类型中全局忽略格式错误的内容。如果不支持该设置的映射类型在索引级别设置了该设置,则会忽略该设置。
response = client.indices.create( index: 'my-index-000001', body: { settings: { 'index.mapping.ignore_malformed' => true }, mappings: { properties: { number_one: { type: 'byte' }, number_two: { type: 'integer', ignore_malformed: false } } } } ) puts response