禁用仅对Elasticsearch上的特定索引创建动态映射?
我正在尝试仅针对特定索引而不是对所有索引禁用动态映射创建。由于某种原因,我无法将 默认 映射与’dynamic’:’false’
放在一起。因此,在这里我看到了两个选项:
- 指定属性 “index.mapper.dynamic” 文件 elasticsearch.yml 。
- 将 “ index.mapper.dynamic” 放在索引创建时,如此处https://www.elastic.co/guide/en/kibana/current/setup.html#kibana-dynamic-mapping所述
第一个选项只能接受以下值:true,false和strict。所以没有办法像我们用的特性模式做来指定具体指标的子集(
“action.auto_create_index”
https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-
index_.html#索引创建)。
第二种选择是行不通的。我已经创建了索引
POST http://localhost:9200/test_idx/{
"settings" : {
"mapper" : {
"dynamic" : false
}
},
"mappings" : {
"test_type" : {
"properties" : {
"field1" : {
"type" : "string"
}
}
}
}
}
然后检查索引设置:
GET http://localhost:9200/test_idx/_settings {
"test_idx" : {
"settings" : {
"index" : {
"mapper" : {
"dynamic" : "false"
},
"creation_date" : "1445440252221",
"number_of_shards" : "1",
"number_of_replicas" : "0",
"version" : {
"created" : "1050299"
},
"uuid" : "5QSYSYoORNqCXtdYn51XfA"
}
}
}
}
和映射:
GET http://localhost:9200/test_idx/_mapping{
"test_idx" : {
"mappings" : {
"test_type" : {
"properties" : {
"field1" : {
"type" : "string"
}
}
}
}
}
}
到目前为止,到目前为止,让我们使用未声明的字段索引文档:
POST http://localhost:9200/test_idx/test_type/1{
"field1" : "it's ok, field must be in mapping and in source",
"somefield" : "but this field must be in source only, not in mapping"
}
然后,我再次检查了映射:
GET http://localhost:9200/test_idx/_mapping{
"test_idx" : {
"mappings" : {
"test_type" : {
"properties" : {
"field1" : {
"type" : "string"
},
"somefield" : {
"type" : "string"
}
}
}
}
}
}
如您所见,无论索引设置为“ dynamic”,映射都将扩展:false。我也尝试完全按照文档中的描述创建索引
PUT http://localhost:9200/test_idx{
"index.mapper.dynamic": false
}
但有相同的行为。
也许我错过了什么?
在此先多谢!
回答:
您快到了:该值需要设置为strict
。正确的用法如下:
PUT /test_idx{
"mappings": {
"test_type": {
"dynamic":"strict",
"properties": {
"field1": {
"type": "string"
}
}
}
}
}
再进一步说明一下,如果您想甚至禁止创建新类型,不仅要禁止该索引中的字段,请使用以下命令:
PUT /test_idx{
"mappings": {
"_default_": {
"dynamic": "strict"
},
"test_type": {
"properties": {
"field1": {
"type": "string"
}
}
}
}
}
没有_default_
模板:
PUT /test_idx{
"settings": {
"index.mapper.dynamic": false
},
"mappings": {
"test_type": {
"dynamic": "strict",
"properties": {
"field1": {
"type": "string"
}
}
}
}
}
以上是 禁用仅对Elasticsearch上的特定索引创建动态映射? 的全部内容, 来源链接: utcz.com/qa/410386.html