基本概念
在使用es前需要了解如下几个名词
Index 索引
Elastic 数据管理的顶层单位就叫做 Index(索引)。它是单个数据库的同义词。每个 Index (即数据库)的名字必须是小写。
Type 类型
在Index(索引)中,可以定义一个或多个类型,类似于Mysql中的Table,每一种类型的数据放在一起
Document 文档
保存在某个索引(Index)下,某种类型(Type)的一条数据(Document),以Json格式保存,Document类似于Mysql中Table里的一条数据
{
"user": "张三",
"title": "工程师",
"desc": "数据库管理"
}
开始检索
_cat 查询
_cat可以查询es的具体情况数据
GET/ cat/nodes:查看所有节点
GET/ cat/health:查看es健康状况
GET/ cat/master:查看主节点
GET/ cat/indices:查看所有索引 类似show databases;
保存文档
使用 put 方式保存
注意: put 必须指定id,不指定id会报错
操作成功后,相应如下
{
"_index": "customer",
"_type": "external",
"_id": "1",
"_version": 1,
"result": "created",
"_shards": {
"total": 2,
"successful": 1,
"failed": 0
},
"_seq_no": 0,
"_primary_term": 1
}
注意,put 可以是保存(created),也可以是更新(update)
post 保存
使用post方式保存,可以指定id,也可以不指定id。
- 不指定id,es会自动生成一个id,每一次都是新增操作
- 指定了id,没有就是新增操作,有这个id就是更新操作
相应如下
{
"_index": "customer",
"_type": "external",
"_id": "XsjxnnIByVzTCxw9Y_AS",
"_version": 1,
"result": "created",
"_shards": {
"total": 2,
"successful": 1,
"failed": 0
},
"_seq_no": 1,
"_primary_term": 1
}
post 方式不指定id,每一次都会随机生成一个id
查询文档 get
示例: 查询customer索引,external类型下id为1的信息
相应信息:
更新文档
更新前 customer/external/1的数据如下
{
"name": "张三",
"age": 23,
"sex": "男"
}
更新操作有好几种方式
第一种: POST customer/external/1/_update
注意: 带_update的方式一定要写doc,否则报错
如果再执行相同的操作
相应如下
总结
post 带_update的es会对比前后数据,如果和原先的值相同就不会做更新操作,版本号和序列号不变
第二种 POST customer/external/1
查询结果:
总结: post 不带_update doc版,不会比较前后数据,会一直更新,一直叠加版本
同理: 使用PUT也有上面两种方式,结果相同
删除
删除文档
DELETE 索引/类型/id
示例: 删除customer/external/1
在查询上面的文档数据
删除索引
DELETE 索引
es并没有提供提供删除类型的操作
bulk 批量api
POST 索引/类型/_bulk
批量操作无法用postman测试,改用kibana
结果如下
复杂示例
POST /_bulk
{"delete":{"_index":"website","_type":"blog","_id":"123"}}
{"create":{"_index":"website","_type":"blog","_id":"123"}}
{"title":"My first blog post"}
{"index":{"_index":"website","_type":"blog"}}
{"title":"My second blog post"}
{"update":{"_index":"website","_type":"blog","_id":"123"}}
{"doc":{"title":"My update blog post"}}
es官网测试数据accounts.zip
将account.json数据通过kiana导入