1.基本概念
1.inde(索引)
动词:相当于Mysql中的indert
名词:相当于Mysql中的Database
2.Type(类型)
在index(索引)中,可以定义一个或多个类型
类似于Mysql中的Table;每一种类型的数据放在一起
3.Document(文档)
保存在某个索引下,某种类型(Type)的一个数据(document),文档是JSON格式的,Document就像Mysql中的某个Tabel里面的内容
2.命令
1._cat
GET /_cat/nodes :查看所有节点
GET /_cat/helth :查看es健康状况
GET /_cat/master:查看主节点
GET /_cat/indices: 查看所有索引
2.新增文档(保存)
保存一个数据,保存在哪个索引的哪个类型下,指定哪个唯一标识
PUT customer/external/1; 在customer索引下的external类型下保存1号数据 :
{
“name":"John Doe"
}
PUT和POST都可以保存
POST新增:如果不指定id,会自动生成id。指定id就会修改这个数据,并新增版本号
PUT可以新增可以修改。PUT必须指定id;由于需要指定id,我们一般都用来修改操作
3.查询文档
GET customer/external/1
_index:在那个索引
_type:在哪个类型下
_id:记录id
_version:版本号
_seq_no:并发控制字段,每次跟新就会+1,用来做乐观锁
_primary_term:主分片重新分配,如重新,就会变化
_source:真正内容
4.跟新文档
跟新携带?if_seq_no=0&if_primary_term=1 做乐观锁
POST /customer/external/1/_update:会对比元数据,与原来一样就什么都不做,version,seq_no都不变
{
"doc":{
"name":"John Deo2"
}
}
PUT customer/external/1
{
"name":"John Doe2"
}
POST操作会对比原文档数据,如果相同不会有什么操作。文档version不增加 PUT操作总会将数据重新保存并增加version版本
场景:
对于大并发更新,不带update
对于大并发查询偶尔更新,带update;对比跟新
5.删除文档&索引
DELETE customer/external/1
DELETE customer
6.bulk批量API
POST customer/external/_bulk
7.检索
ES支持两种基本方式检索:
一个是通过REST resquest URI 发送搜索参数(uri + 检索参数)
一个是通过使用 REST request body 来发送(uri + 请求体)