7.索引库操作
mapping映射属性
mapping是对索引库中文档的约束
常见的mapping属性包括:
type 字段数据类型,常见的简单类型有:
字符串:text(可分词的文本) keyword(精确值,例如:品牌、国家,ip地址)
数值:long integer short byte double float
布尔:boolean
日期:date
对象:object,例如下面name字段的值就是一个json对象。
index 是否创建索引,默认为true,表示创建倒排索引,会参与到搜索。false表示不会创建倒排索引,不会参与搜索。
analyzer: 使用哪种分词器,跟上面type为text的字段结合使用。
properties:该字段的子字段。例如下面指定name字段的子属性firstName和lastName。
es没有数组类型,但是es中允许字段有多个值,所以支持存储数组数据。只需要关注数组中元素的类型就可以了。
{
"age": 22,
"weight": 52.1,
"isMarried": false,
"info": "我是一个程序员,很有才华的哟",
"email": "aaa@qq.com",
"score": [99, 85, 77],
"name": {
"firstName": "云",
"lastName": "赵"
}
}
索引库的CRUD
1.创建索引库和mapping的DSL语句
# 创建索引库person,并定义字段mapping
PUT /person
{
"mappings": {
"properties": {
"info": {
"type": "text",
"analyzer": "ik_smart"
},
"email": {
"type": "keyword",
"index": "false"
},
"name": {
"type": "object",
"properties": {
"firstName": {
"type": "keyword"
},
"lastName": {
"type": "keyword"
}
}
},
"age": {
"type": "integer"
},
"weight": {
"type": "float"
},
"isMarried": {
"type": "boolean"
},
"score": {
"type": "integer"
},
"birthday": {
"type": "date"
}
}
}
}
执行结果:
{
"acknowledged" : true,
"shards_acknowledged" : true,
"index" : "person"
}
2.查询索引库
GET /person
3.删除索引库
delete /person
4.修改索引库
在es中可以允许添加新字段,只是禁止修改原字段。
PUT /person/_mapping
{
"properties": {
"heigh":{
"type": "float"
}
}
}
{
"acknowledged" : true
}