第三节:基于DevTools的索引库操作和文档操作详解
一. 索引库操作
(Index就类似数据库表,Mapping映射就类似表的结构。我们要向es中存储数据,必须先创建Index和Mapping)
1.创建索引和映射
(1) 基本语法
-
PUT -
请求路径:
/索引库名,可以自定义 -
请求参数:
mapping
(2) 格式
PUT /索引库名称
{
"mappings": {
"properties": {
"字段名":{
"type": "text",
"analyzer": "ik_smart"
},
"字段名2":{
"type": "keyword",
"index": "false"
},
"字段名3":{
"properties": {
"子字段": {
"type": "keyword"
}
}
},
}
}
}
(3) 样例
PUT /user
{
"mappings": {
"properties": {
"info":{
"type": "text",
"analyzer": "ik_smart"
},
"email":{
"type": "keyword",
"index": false
},
"name":{
"properties": {
"firstName":{
"type": "keyword"
},
"lastName":{
"type": "keyword"
}
}
}
}
}
}
2 查询索引库
(1) 基本语法
-
-
请求路径:/索引库名
-
(2) 格式
GET /索引库名
(3) 样例
GET /user
3 修改索引库
(1) 基本语法
倒排索引结构虽然不复杂,但是一旦数据结构改变(比如改变了分词器),就需要重新创建倒排索引,这简直是灾难。因此索引库一旦创建,无法修改mapping。
虽然无法修改mapping中已有的字段,但是却允许添加新的字段到mapping中,因为不会对倒排索引产生影响。因此修改索引库能做的就是向索引库中添加新字段,或者更新索引库的基础属性。
(2) 格式
PUT /索引库名/_mapping
{
"properties": {
"新字段名":{
"type": "integer"
}
}
}
(3) 样例
PUT /user/_mapping
{
"properties":{
"age":{
"type": "integer"
}
}
}
4 删除索引库
(1) 基本语法
-
-
请求路径:/索引库名
-
(2) 格式
DELETE /索引库名
(3) 样例
DELETE /user
二. 文档操作
1 新增文档
(1) 语法
POST /索引库名/_doc/文档id
{
"字段1": "值1",
"字段2": "值2",
"字段3": {
"子属性1": "值3",
"子属性2": "值4"
},
}
(2) 样例
事先创建索引
PUT /user
{
"mappings": {
"properties": {
"info":{
"type": "text",
"analyzer": "ik_smart"
},
"email":{
"type": "keyword",
"index": false
},
"name":{
"properties": {
"firstName":{
"type": "keyword"
},
"lastName":{
"type": "keyword"
}
}
}
}
}
}
新增文档
POST /user/_doc/1
{
"info": "青岛欢迎您",
"email": "ypf@qq.cn",
"name": {
"firstName": "云",
"lastName": "赵"
}
}
2 查询文档
(1) 语法
GET /{索引库名称}/_doc/{id}
(2) 样例
GET /user/_doc/1

3 删除文档
(1) 语法
删除使用DELETE请求,同样,需要根据id进行删除:
DELETE /{索引库名}/_doc/id值
(2) 样例
DELETE /user/_doc/1
4 修改文档
修改有两种方式:
-
全量修改:直接覆盖原来的文档
-
局部修改:修改文档中的部分字段
4.1 全量修改
(1) 语法
PUT /{索引库名}/_doc/文档id
{
"字段1": "值1",
"字段2": "值2",
// ... 略
}
(2) 样例
PUT /user/_doc/1
{
"info": "山东欢迎你",
"email": "zs@qq.cn",
"name": {
"firstName": "三",
"lastName": "张"
}
}

4.2 局部修改
(1) 语法
POST /{索引库名}/_update/文档id
{
"doc": {
"字段名": "新的值",
}
}
(2) 样例
POST /user/_update/1
{
"doc":{
"email":"hh@test.cn"
}
}
5 批处理
(1) 语法
POST _bulk
{ "index" : { "_index" : "test", "_id" : "1" } }
{ "field1" : "value1" }
{ "delete" : { "_index" : "test", "_id" : "2" } }
{ "create" : { "_index" : "test", "_id" : "3" } }
{ "field1" : "value3" }
{ "update" : {"_id" : "1", "_index" : "test"} }
{ "doc" : {"field2" : "value2"} }
PS:
-
index代表新增操作-
_index:指定索引库名 -
_id指定要操作的文档id -
{ "field1" : "value1" }:则是要新增的文档内容
-
-
delete代表删除操作-
_index:指定索引库名 -
_id指定要操作的文档id
-
-
update代表更新操作-
_index:指定索引库名 -
_id指定要操作的文档id -
{ "doc" : {"field2" : "value2"} }:要更新的文档字段
-
(2) 样例-批量新增
POST /_bulk
{"index":{"_index":"user", "_id":3}}
{"info":"test11111", "email":"ww@hh.cn","name":{"firstName":"王", "lastName":"五"}}
{"index":{"_index":"user", "_id":4}}
{"info":"test77777", "email":"zs@hh.cn","name":{"firstName":"张", "lastName":"三"}}
(2) 样例-批量删除
POST /_bulk
{"delete":{"_index":"user", "_id":3}}
{"delete":{"_index":"user", "_id":4}}
!
- 作 者 : Yaopengfei(姚鹏飞)
- 博客地址 : http://www.cnblogs.com/yaopengfei/
- 声 明1 : 如有错误,欢迎讨论,请勿谩骂^_^。
- 声 明2 : 原创博客请在转载时保留原文链接或在文章开头加上本人博客地址,否则保留追究法律责任的权利。

浙公网安备 33010602011771号