前面文章介绍了Elasticsearch的搭建,使用Kibana发送指令,使用Elasticsearch-Head监控。本文主要介绍Elasticsearch基本API使用,以及怎么在Elasticsearch-Head监控页面查看Elasticsearch相关的信息。
我们可以通过后台静默启动Elasticsearch,Elasticsearch-Head以及Kibana:
在/opt/elasticsearch-7.3.2/bin目录下,执行 ./elasticsearch -d 访问localhost:9200
在/opt/kibana-7.3.2-linux-x86_64/bin目录下,执行 nohup ./kibana --allow-root & 访问192.168.0.103:5601
在 /opt/elasticsearch-head-master目录下,执行npm run start 访问192.168.0.103:9100
如果报npm不存在但是前面又安装过,那么查看是不是配置文件没生效,执行source /etc/profile
一.RESTful API
1.创建空索引
PUT /yang
{
"settings": {
"number_of_shards": 2, //分片数为2
"number_of_replicas": 0 //不使用副本
}
}
由于没有设置副本数所以不需要副本节点,那么集群健康值就是green健康;但是如果修改副本数且没有部署副本节点的话,集群健康值就会变成yellow
PUT /yang/_settings
{
"number_of_replicas": 1 //设置副本数
}
但是在不重建分片的情况下“分片数”是不能修改的,修改主分片数就会提示报错,因为数据是基于分片数进行hash得到要存储的分片位置,如果中途把分片数修改了,那么数据存储就会出问题。
PUT /yang/_settings
{
"number_of_shards": 1
}
2.删除索引
DELETE /yang
3.插入数据
POST /yang/_doc/1001
{
"id":1,
"name":"zhangsan",
"age":18
}
如果不指定id,则ES会自动帮我们生成一个Id
POST /yang/_doc
{
"id":2000,
"name":"xiaoming",
"age":30
}
4.更新数据
在Elasticsearch中,文档数据是不能修改的,但是可以通过覆盖的方式进行更新
POST /yang/_doc/1001
{
"id":2000,
"name":"xiaoming",
"age":20,
"sex":"男"
}
修改ID为1001的记录,此时ES中ID是1001的记录就会被修改,同时修改后该记录的version版本会加1
ES支持局部更新:
其实es内部对partial update的实际执行和传统的全量替换方式是几乎一样的,其步骤如下
- 内部先获取到对应的document;
- 将传递过来的field更新到document的json中(这一步实质上也是一样的);
- 将老的document标记为deleted(到一定时候才会物理删除);
- 将修改后的新的document创建出来
替换和更新的不同:替换是每次都会去替换,更新是有新的东西就更新,没有新的修改就不更新,更新比替换的性能好
5.删除数据
DELETE /yang/_doc/1001
删除索引的某些记录,会将记录标记为deleted状态,同时版本也会加1,执行后ES中会删掉这条记录。
删除索引:
DELETE /yang
6.根据id搜索数据
GET /yang/_doc/1001
6.1搜索全部数据
GET /yang/_search 默认最多返回10条数据