如何在elasticsearch中定义一个不接受映射的字段的映射?

got*_*ch4 7 elasticsearch

好的,在我的弹性系统中,我使用以下映射作为索引:

{

    "mappings": {
        "mytype": {
            "type":"object",
            "dynamic" : "false",
            "properties": {
                "name": {
                    "type": "string"
                },
                "address": {
                    "type": "string"
                },
                "published": {
                    "type": "date"
                }

            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

有用.事实上,如果我在"已发布"字段中输入格式错误的日期,则会抱怨并失败.我还有以下配置:

...
node.name : node1
index.mapper.dynamic : false
index.mapper.dynamic.strict : true
...
Run Code Online (Sandbox Code Playgroud)

没有映射,我真的不能使用这种类型.问题是,如果我插入类似的东西:

{"name":"boh58585","address":"hiohio","已发布":"2014-4-4","test":"hophiophop"}

它会很乐意接受它.这不是我期望的行为,因为该字段test不在映射中.如何将文档的字段限制为仅映射中的字段?

rob*_*son 11

使用"dynamic": false告诉Elasticsearch永远不允许更改索引的映射.如果您希望在尝试使用定义的映射之外的字段索引新文档时抛出错误,请"dynamic": "strict"改用.

从文档:"动态参数也可以设置为严格,这意味着不仅不会将新字段引入映射,使用这些新字段解析(索引)文档将失败."

既然你已经在设置中定义了这个,我猜想完全忽略dynamic映射定义将默认为"dynamic": "strict".