好的,在我的 elastisearch 中,我使用以下索引映射:
{
"mappings": {
"mytype": {
"type":"object",
"dynamic" : "false",
"properties": {
"name": {
"type": "string"
},
"address": {
"type": "string"
},
"published": {
"type": "date"
}
}
}
}
}
它有效。事实上,如果我在“已发布”字段中输入格式错误的日期,它会提示并失败。 我还有以下配置:
...
node.name : node1
index.mapper.dynamic : false
index.mapper.dynamic.strict : true
...
如果没有映射,我就无法真正使用该类型。问题是如果我插入类似的东西:
{ “名称”:“boh58585”, “地址”:“hiohio”, "发表": "2014-4-4", “测试”:“hophiophop”
它会很高兴地接受它。这不是我期望的行为,因为字段 test
不在映射中。如何将文档的字段限制为仅映射中的字段???
最佳答案
"dynamic": false
的使用告诉 Elasticsearch 永远不允许更改索引的映射。如果您希望在尝试使用定义映射之外的字段索引新文档时引发错误,请改用 "dynamic": "strict"
。
来自文档: “动态参数也可以设置为严格,这意味着不仅不会将新字段引入映射,解析(索引)具有此类新字段的文档也会失败。”
既然你已经在设置中定义了它,我猜想从映射定义中完全省略 dynamic
将默认为 "dynamic": "strict"
.
关于elasticsearch - 如何在 elasticsearch 中定义一个不接受映射字段以外的字段的映射?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18471542/