映射(mapping)
每个文档(document)都是字段(field)的集合,每个字段都有自己的数据类型(data type)。映射包含与文档相关的字段列表及字段的数据类型,还包括元数据字段(metadata fields),如_source字段,它自定义如何处理文档关联的元数据。 其实就是索引的定义,类似mysql的表定义。
自动创建映射和显式创建映射
自动创建映射是指,当索引一个文档时,Elasticsearch自动向映射添加字段, elasticsearch会自动猜测你的字段的数据类型(不建议)。
显式创建映射:
curl -X PUT "localhost:9200/my-index-000001?pretty" -H 'Content-Type: application/json' -d'
{
"mappings": {
"properties": {
"age": { "type": "integer" },
"email": { "type": "keyword" },
"name": { "type": "text" }
}
}
}
'
显式更新映射
下面的示例添加employee-id,这是一个keyword字段,索引映射参数index值为false(这意味着employee-id字段的值会被存储,但不会建立索引或用于搜索)
curl -X PUT "localhost:9200/my-index-000001/_mapping?pretty" -H 'Content-Type: application/json' -d'
{
"properties": {
"employee-id": {
"type": "keyword",
"index": false
}
}
}
'
查看索引的映射
curl -X GET "localhost:9200/my-index-000001/_mapping?pretty"
返回:
{
"my-index-000001" : {
"mappings" : {
"properties" : {
"age" : {
"type" : "integer"
},
"email" : {
"type" : "keyword"
},
"employee-id" : {
"type" : "keyword",
"index" : false
},
"name" : {
"type" : "text"
}
}
}
}
}
查看单个字段的映射
下面的请求检索employee-id字段的映射,如果要查看多个字段,则用逗号隔开
curl -X GET "localhost:9200/my-index-000001/_mapping/field/employee-id,name?pretty"
返回:
{
"my-index-000001" : {
"mappings" : {
"employee-id" : {
"full_name" : "employee-id",
"mapping" : {
"employee-id" : {
"type" : "keyword",
"index" : false
}
}
}
}
}
}
|