有没有办法配置Elasticsearch,以防止在特定索引中创建新类型?

时间:2015-05-25 15:36:16

标签: indexing elasticsearch mapping

例如: 我有索引和文档类型 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以防止在特定索引中创建新类型?

2 个答案:

答案 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