zoukankan      html  css  js  c++  java
  • 关闭ES动态创建mapping

    使用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
    
  • 相关阅读:
    JTAG的SWD接线方式
    Qt のEXecl
    人脸识别
    Qt实现基本QMainWindow主窗口程序
    Qt学习之路MainWindow学习过程中的知识点
    QT_FORWARD_DECLARE_CLASS
    标准的并发控制实现
    C++ DFS
    C# 互操作(一) 编写一个C++ COM组件
    Socket使用SOAP调用WCF
  • 原文地址:https://www.cnblogs.com/xzysaber/p/5765773.html
Copyright © 2011-2022 走看看