首页 > 移动平台 > 详细

关闭ES动态创建mapping

时间:2016-08-12 18:03:07      阅读:522      评论:0      收藏:0      [点我收藏+]

使用ES的默认配置会使我们在索引不存在于mapping中的字段时,会自动创建。

这无疑会给我们带来困扰。

在我们不想要某个字段被搜索的时候,我们可以在开始关闭动态创建mapping。

执行如下操作:

PUT /test_xzy/_mapping/data
{
  "dynamic":false
}

然后查看mapping:

GET /test_xzy/_mappings/data

得到:

{
  "test_xzy": {
    "mappings": {
      "data": {
        "dynamic": "false",
        "properties": {
          "age": {
            "type": "long"
          },
          "hate": {
            "type": "string"
          },
          "like": {
            "type": "string"
          },
          "name": {
            "type": "string"
          }
        }
      }
    }
  }
}

这样一来,在不存在于mapping中的字段在被索引之后不会存在于mapping中,这样的字段也不能被用来搜索。

我们更严格一点可以设置不在mapping中的字段的数据不能写入ES:

PUT /test_xzy/_mapping/data
{
  "dynamic":"strict"
}

这样我们之后写入非”name,age,like,hate“的其他字段数据时会得到如下错误:

mapping set to strict, dynamic introduction of [hatae] within [data] is not allowed

 

关闭ES动态创建mapping

原文:http://www.cnblogs.com/xzysaber/p/5765773.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!