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

标签 elasticsearch

好的,在我的 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/

相关文章:

elasticsearch - 如何过滤掉来自 Packetbeat 和 Logstash 的 127.0.0.1 流量?

java - 无法在Java中插入带有特殊字符的elasticsearch

elasticsearch - Elasticsearch,计算不包括的术语

elasticsearch - 在 elasticsearch 中为一个特定索引聚合时总和不正确

elasticsearch - index_not_found_exception,原因=没有这样的索引[Sugestao]]-如何将索引名称传递给reactElasticsearchOperations.search

ruby-on-rails - 限制 Rails 中的 Elasticsearch 结果计数

elasticsearch - 使用查询参数时,Elasticsearch Helpers Scan API错误

Elasticsearch 错误 : MapperParsingException failed to parse

elasticsearch - 按 key 长度过滤 "terms aggregation"

java - 使用 Elasticsearch JAVA API 将 network.publish_host 设置为客户端节点