④. 检索es基本信息
- ①. GET /_cat/nodes:查看所有节点
- ②. GET /_cat/health:查看es健康状况
- ③. GET /_cat/master:查看主节点
- ④. GET/_cat/indicies:查看所有索引 ,等价于mysql数据库的show databases;
green open .kibana_task_manager_1 DhtDmKrsRDOUHPJm1EFVqQ 1 0 2 3 40.8kb 40.8kb green open .apm-agent-configuration vxzRbo9sQ1SvMtGkx6aAHQ 1 0 0 0 230b 230b green open .kibana_1 rdJ5pejQSKWjKxRtx-EIkQ 1 0 5 1 18.2kb 18.2kb 这3个索引是kibana创建的
⑤. 增删改查文档
- ①. 保存一个数据,保存在哪个索引的哪个类型下(哪张数据库哪张表下),保存时用唯一标识指定
POST新增。如果不指定id,会自动生成id。指定id就会修改这个数据,并新增版本号;
可以不指定id,不指定id时永远为创建
指定不存在的id为创建
指定存在的id为更新(带了_update操作的),而版本号会根据内容变没变而觉得版本号递增与否
PUT可以新增也可以修改。PUT必须指定id;由于PUT需要指定id,我们一般用来做修改操作,不指定id会报错
必须指定id、版本号总会增加
put和java里map.put一样必须指定key-value。而post相当于mysql insert
# # 在customer索引下的external类型下保存1号数据 PUT customer/external/1 # POSTMAN输入 http://192.168.56.10:9200/customer/external/1 { "name":"John Doe" }
seq_no和version的区别:
(1). 每个文档的版本号"_version" 起始值都为1,每次对当前文档成功操作后都加1
(2). 而序列号"_seq_no"则可以看做是索引的信息 在第一次为索引插入数据时为0,每对索引内数据操作成功一次sqlNO加1,并且文档会记录是第几次操作使它成为现在的情况的
②. 查看文档
GET /customer/external/1 http://192.168.56.10:9200/customer/external/1 { "_index": "customer", "_type": "external", "_id": "1", "_version": 10, "_seq_no": 18,//并发控制字段,每次更新都会+1,用来做乐观锁 "_primary_term": 6,//同上,主分片重新分配,如重启,就会变化 "found": true, "_source": { "name": "John Doe" } }
乐观锁用法:通过“if_seq_no=1&if_primary_term=1”,当序列号匹配的时候,才进行修改,否则不修改
实例:将id=1的数据更新为name=1,然后再次更新为name=2,起始1_seq_no=18,_primary_term=6
(1). 将name更新为1
PUT http://192.168.56.10:9200/customer/external/1?if_seq_no=18&if_primary_term=6