显式映射
编辑显式映射
编辑你比 Elasticsearch 更了解你的数据,因此,尽管动态映射在开始时很有用,但在某些时候你还是需要指定自己的显式映射。
使用显式映射创建索引
编辑你可以使用创建索引 API 来创建具有显式映射的新索引。
resp = client.indices.create( index="my-index-000001", mappings={ "properties": { "age": { "type": "integer" }, "email": { "type": "keyword" }, "name": { "type": "text" } } }, ) print(resp)
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)
const response = await client.indices.create({ index: "my-index-000001", mappings: { properties: { age: { type: "integer", }, email: { type: "keyword", }, name: { type: "text", }, }, }, }); console.log(response);
PUT /my-index-000001 { "mappings": { "properties": { "age": { "type": "integer" }, "email": { "type": "keyword" }, "name": { "type": "text" } } } }
向现有映射添加字段
编辑你可以使用更新映射 API 向现有索引添加一个或多个新字段。
以下示例添加 employee-id
,一个 keyword
字段,其 index
映射参数值为 false
。这意味着 employee-id
字段的值将被存储,但不会被索引或用于搜索。
resp = client.indices.put_mapping( index="my-index-000001", properties={ "employee-id": { "type": "keyword", "index": False } }, ) print(resp)
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)
const response = await client.indices.putMapping({ index: "my-index-000001", properties: { "employee-id": { type: "keyword", index: false, }, }, }); console.log(response);
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)
const response = await client.indices.getMapping({ index: "my-index-000001", }); console.log(response);
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
字段的映射。
resp = client.indices.get_field_mapping( index="my-index-000001", fields="employee-id", ) print(resp)
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)
const response = await client.indices.getFieldMapping({ index: "my-index-000001", fields: "employee-id", }); console.log(response);
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 } } } } } }