【官方文档翻译】映射 - 显式映射 - Elasticsearch

108 阅读2分钟

显式映射(Explicit mapping)

关于你的数据,你知道的比Elasticsearch能猜到的要更多,所以虽然动态映射在刚刚开始的时候有用,但在一些时刻你需要指定自己的显式映射。
你可以在你创建一个索引时和添加字段到一个存在的索引时创建字段映射。

1. 创建一个带有显式映射的索引

你可以使用创建索引 API 创建一个带有显式映射的索引。

PUT /my-index-000001
{
  "mappings": {
    "properties": {
      "age":    { "type": "integer" },  // @1
      "email":  { "type": "keyword"  },   // @2
      "name":   { "type": "text"  }     // @3
    }
  }
}

@1:创建 age,一个 integer 字段
@2:创建 email,一个 keyword 字段
@3:创建 name,一个 text 字段

2. 向一个存在的映射添加一个字段

你可以使用 更新映射 API 向一个存在的索引添加一个或多个新的字段。
下面的例子添加了 emplyee-id - 一个 keyword 类型的字段带着一个值为 false 的映射参数 index。这意味着 employee-id 字段的值被存储但没有被索引或通过搜索来获取。

PUT /my-index-000001/_mapping
{
  "properties": {
    "employee-id": {
      "type": "keyword",
      "index": false
    }
  }
}

3. 更新一个字段的映射

除了支持的映射参数外,你不能改变现有字段的映射或字段类型。改变一个现有字段可能会使已经索引的数据失效。
如果你需要在一个数据流的备份索引里更改映射,查看为一个数据流改变映射和设置
如果你需要改变其它索引里的字段的映射,创建一个带有正确映射的索引并且重新索引你的数据到那个索引里。
重命名一个字段会使已经索引到旧的字段名称下的数据失效。相反,添加一个字段 别名 可以创建一个备用的字段名。

4. 查看一个索引的映射

你可以使用 获取映射 API 来查看一个现有索引的映射。

GET /my-index-000001/_mapping

此 API 返回下面的响应:

{
  "my-index-000001" : {
    "mappings" : {
      "properties" : {
        "age" : {
          "type" : "integer"
        },
        "email" : {
          "type" : "keyword"
        },
        "employee-id" : {
          "type" : "keyword",
          "index" : false
        },
        "name" : {
          "type" : "text"
        }
      }
    }
  }
}

5. 查看指定字段的映射

如果你只想要查看一个或多个指定字段的映射,你可以使用 获取字段映射 API 。
这在你不需要一个索引的全部映射或者你的索引包含了很多的字段时比较有用。
下面的请求取回 emplyee-id 字段的映射。

GET /my-index-000001/_mapping/field/employee-id

此 API 返回下面的响应:

{
  "my-index-000001" : {
    "mappings" : {
      "employee-id" : {
        "full_name" : "employee-id",
        "mapping" : {
          "employee-id" : {
            "type" : "keyword",
            "index" : false
          }
        }
      }
    }
  }
}