显式映射
编辑显式映射编辑
您比 Elasticsearch 更了解您的数据,因此虽然动态映射对于入门很有用,但在某些时候您需要指定自己的显式映射。
您可以在 创建索引 和 向现有索引添加字段 时创建字段映射。
使用显式映射创建索引编辑
您可以使用 创建索引 API 来使用显式映射创建新索引。
response = client.indices.create( index: 'my-index-000001', body: { mappings: { properties: { age: { type: 'integer' }, email: { type: 'keyword' }, name: { type: 'text' } } } } ) puts response
res, err := es.Indices.Create( "my-index-000001", es.Indices.Create.WithBody(strings.NewReader(`{ "mappings": { "properties": { "age": { "type": "integer" }, "email": { "type": "keyword" }, "name": { "type": "text" } } } }`)), ) fmt.Println(res, err)
PUT /my-index-000001 { "mappings": { "properties": { "age": { "type": "integer" }, "email": { "type": "keyword" }, "name": { "type": "text" } } } }
向现有映射添加字段编辑
您可以使用 更新映射 API 向现有索引添加一个或多个新字段。
以下示例添加 employee-id
,一个 keyword
字段,其 index
映射参数值为 false
。这意味着 employee-id
字段的值将被存储,但不会被索引或用于搜索。
response = client.indices.put_mapping( index: 'my-index-000001', body: { properties: { "employee-id": { type: 'keyword', index: false } } } ) puts response
res, err := es.Indices.PutMapping( []string{"my-index-000001"}, strings.NewReader(`{ "properties": { "employee-id": { "type": "keyword", "index": false } } }`), ) fmt.Println(res, err)
PUT /my-index-000001/_mapping { "properties": { "employee-id": { "type": "keyword", "index": false } } }
更新字段的映射编辑
除了支持的 映射参数 外,您无法更改现有字段的映射或字段类型。更改现有字段可能会使已索引的数据失效。
如果您需要更改数据流的后台索引中的字段映射,请参阅 更改数据流的映射和设置。
如果您需要更改其他索引中的字段映射,请使用正确的映射创建一个新索引,然后将您的数据 重新索引 到该索引中。
重命名字段将使已索引在旧字段名称下的数据失效。相反,添加一个 alias
字段来创建备用字段名称。
查看索引的映射编辑
您可以使用 获取映射 API 来查看现有索引的映射。
resp = client.indices.get_mapping( index="my-index-000001", ) print(resp)
response = client.indices.get_mapping( index: 'my-index-000001' ) puts response
res, err := es.Indices.GetMapping(es.Indices.GetMapping.WithIndex("my-index-000001")) fmt.Println(res, err)
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" } } } } }
查看特定字段的映射编辑
如果您只想查看一个或多个特定字段的映射,可以使用 获取字段映射 API。
如果您不需要索引的完整映射或您的索引包含大量字段,这将很有用。
以下请求检索 employee-id
字段的映射。
response = client.indices.get_field_mapping( index: 'my-index-000001', fields: 'employee-id' ) puts response
res, err := es.Indices.GetMapping(es.Indices.GetMapping.WithIndex("my-index-000001")) fmt.Println(res, err)
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 } } } } } }