索引库操作
mappig常用属性
mapping是对索引库中文档的约束,常用的mapping属性如下:
type:数据类型
index:是否创建索引(倒排索引),默认true,不需要参与查询的字段可以设置为false
analyzer:使用哪种分词器。
properties:指定该字段的子字段
数据类型(type)表:
type的数据类型 | 释义 | 数据示例 |
text | 字符串,可分词的文本 | { "age": 18, //数值 "weight": 50.1,//数值 "isTrue": false, //boolean "info": "我是一名java程序猿",//text "email": "xiao@qq.com",//一般keyword //数值,不管数组的类型,只管数组中数据元素的类型 "score": [30,50,70.1], "name": { //object "firstName": "云", "lastName": "赵" } } |
keyword | 精确值,完整的数据,不需要分词的数据。例如品牌、国家、IP等 | |
long、integer、short、byte、double、float | 数值 | |
boolean | 布尔 | |
date | 日期 | |
object | 对象 |
创建索引库
语法:
put /索引库名称
{
"mappings": {
"_doc": {
"properties": {
"字段名": { "type": "text", "analyzer": "ik_smart"
},
"字段名": { "type": "keyword", "index": false
},
"字段名": { "type": "object", "properties": {
"子字段名": { "type": "keyword" },
"子字段名": { "type": "keyword" }
}
}
//.....................
}
}
}
}
7.2.0版本后不再支持创建指定类型,索引的默认类型为_doc,如果是这个版本后的json中需要去掉这一层,不然会报错 Root mapping definition has unsupported parameters
Root mapping definition has unsupported parameters报错信息
查看索引库
查看索引库:GET /索引库名称
示例: GET /my_index
修改索引库
索引库和mapping一旦创建无法修改,但是可以添加新字段,语法如下:
PUT 索引名称/_mapping { "properties": { "字段名":{ "type": "数据类型", "其他mapping属性": "属性值" } } } |
示例:
删除索引库
删除索引库:DELETE /索引库名称
示例:DELETE /my_index
文档的操作
新增文档
语法:
POST /索引库/_doc/文档id (文档id可以省略,如果省略es随机生成) { "字段1":"字段值", "字段2":"字段值", ...................................... } |
示例:
查询文档
GET /索引库名称/_doc/文档id (复杂查询逻辑本文档暂不记录)
修改文档
方式一:全量修改,会删除旧文档添加新文档
语法:
PUT /索引名称/_doc/文档id { "字段1":"值", "字段2":"值", 。。。。。。。。。。。。。。。。 } |
方式2:增量修改,修改指定字段
语法:
POST /索引名称/_update/文档id { "doc": { "字段1":"值", "字段2":"值", 。。。。。。。。。。。。。。。。 } } |
删除文档
DELETE /索引库名称/_doc/文档id