当前位置: 首页 > elasticsearch, 搜索 > 正文

elasticsearch禁用dynamic mapping

1 星2 星3 星4 星5 星 (2 次投票, 评分: 4.50, 总分: 5)
Loading ... Loading ...
baidu_share

同名字段的问题,不好避免,干脆禁用dynamic mapping,但是又不能全局的禁用,一般情况下,dynamic mapping还是很帅的,那怎样对个别的索引进行关闭呢?

1.全局的关闭dynamic mapping方法如下:
打开elasticsearch.yml文件,添加一行

1
index.mapper.dynamic : false

2.单个索引的呢,如下

1
2
3
4
5
6
7
8
curl -XPUT http://localhost:9200/your_index/ -d'
{
   "mappings" : {
      "_default_" : {
         "dynamic" : "strict"
      }
   }
}'

然后就可以获取到这样的mapping

1
2
http://localhost:9200/your_index/_mapping
{"your_index":{"_default_":{"dynamic":"strict","properties":{}}}}

如果索引已经有数据了,通过修改类型_defalut_的mapping来禁用dynamic mapping,貌似就不好使了,不过如果你愿意重启下es,还是可以的。

1
{"error":"StrictDynamicMappingException[mapping set to strict, dynamic introduction of [a] is not allowed]","status":400}

还一种方法是:在config/mapping/your_index/目录下新建类型配置文件:_default_.json

1
2
3
4
{  "_default_" : {
         "dynamic" : "strict"
      }
}

本文固定链接: http://www.chepoo.com/elasticsearch-disabled-dynamic-mapping.html | IT技术精华网

elasticsearch禁用dynamic mapping:等您坐沙发呢!

发表评论