例如: 我有索引人和文档类型 person-info 。我通过以下方式明确定义了它的映射:
curl -XPUT 'http://localhost:9200/people/_mapping/person-info' -d '
{
"person-info" : {
"properties" : {
// some mapping
}
}
}
我错误地将一些文档插入 person_info 而不是 person-info 。因此,Elasticsearch使用标准映射自动创建新文档类型 person_info ,这对我们来说并不合适。没有关于此的警告,所以我没有注意到我的代码中的错误。所以现在我有很多不同映射的文档。
有没有办法配置Elasticsearch以防止在特定索引中创建新类型?
答案 0 :(得分:2)
是的。您可以通过在elasticsearch.yml文件中添加以下行来禁用动态映射。
index.mapper.dynamic: false
现在,如果您尝试索引类型为person_info
的文档,则会失败。
答案 1 :(得分:1)
否则您无法更改此行为:此字段是必填字段,在添加新文档时,它用于对其进行索引。如果该字段不存在,Elasticsearch将不知道如何索引该文档。如果缺少该类型的映射,则会创建默认映射。
您唯一能做的就是禁用动态地图创建:https://www.elastic.co/guide/en/elasticsearch/reference/current/mapping-dynamic-mapping.html