关于Elasticsearch 的介绍,可以参考之前的文章:
Elasticsearch和Kibana最新版(v7.3.0)下载、安装、启动(WINDOWS)
Elasticsearch 术语介绍和CRUD实际操作入门
Beats:Elasticsearch 的数据采集器-快速入门
最新版Elasticsearch 7.x入门操作
最新版Elasticsearch 7.x master 主节点找不到或者还没有选举?
Elasticsearch Head Chrome浏览器插件安装和使用(最新版7.x)
订单中心基于Elasticsearch 7.x构建订单查询服务
Elasticsearch 6.4.3 和Spring Boot 2.1.7集成-实战演练完整代码
一、_cat 命令
_cat命令是系统信息查询相关的,下面分成好几个子命令分类。
curl http://localhost:9200/_cat
=^.^=
/_cat/allocation
/_cat/shards
/_cat/shards/{index}
/_cat/master
/_cat/nodes
/_cat/tasks
/_cat/indices
/_cat/indices/{index}
/_cat/segments
/_cat/segments/{index}
/_cat/count
/_cat/count/{index}
/_cat/recovery
/_cat/recovery/{index}
/_cat/health
/_cat/pending_tasks
/_cat/aliases
/_cat/aliases/{alias}
/_cat/thread_pool
/_cat/thread_pool/{thread_pools}
/_cat/plugins
/_cat/fielddata
/_cat/fielddata/{fields}
/_cat/nodeattrs
/_cat/repositories
/_cat/snapshots/{repository}
/_cat/templates
curl http://localhost:9200/_cat/nodes?v
显示Elasticsearch 集群节点的详细信息,如下图所示。
![88c94e817b144eb6ffc7b8b7b5df1d22.png](https://i-blog.csdnimg.cn/blog_migrate/3365b3c2d46d74b789698846a06a221c.jpeg)
二、索引相关操作
ES中一个索引就类似于数据库中一个数据库的概念。当然ES中的数据支持结构化、非结构化数据。
先查询ES集群中有哪些索引:
curl http://localhost:9200/_cat/indices?v
![2f3964e857ba188951f085e1d76d5ac6.png](https://i-blog.csdnimg.cn/blog_migrate/aa9cee951a84fdce369a6ca390c45561.jpeg)
(1)创建新索引
创建一个新索引-demo,然后再次查询索引列表。这时,已经有新增的索引demo了。
curl -XPUT localhost:9200/demo
![0d3eb2b082d7b2353ad03b25abebf486.png](https://i-blog.csdnimg.cn/blog_migrate/39a62c2aaba7ec5b49a103ca8d79ea55.jpeg)
再看看ES的数据目录里是不是创建了相应的文件:
ls dataodes0indices
![21be571a524d02e7c0d5ce3ff3401c5f.png](https://i-blog.csdnimg.cn/blog_migrate/f033e780f95823ca0e9a7221d513fe26.jpeg)
其中 data 是 ES 集群的数据所在目录,nodes 下是集群的节点列表,有多少个节点就有多少个子目录,这里演示系统只有一个名称为0的子目录,说明nodes 下只有一个节点,如果再增加一台服务器,就会有0和1两个子目录。
ikxY1EscQ0SgbFxrp-X-qw 是demo索引的uuid,里面有0-4 个子目录,代表了5个分片。ES 默认对每个索引分配5个分片(shard),每个分片里数据在进行分段(segment),数据会保存在分段里面。
![ff8197cd1b5a381809aa5d2e4b767732.png](https://i-blog.csdnimg.cn/blog_migrate/ae9f082ed475d043c324ae42af79ac45.jpeg)
segments_3 就是一个分段,数据会保存在分段里面。如果是集群配置,则每个分片会根据配置参数会存在多个副本(replica)。
![4f659c633f149579103be02d689b0328.png](https://i-blog.csdnimg.cn/blog_migrate/2ac05581b78ae03063350d33d8f3ea9d.jpeg)
当索引中的数据(也就是文档)量超过原定的分片容量时,无法保存新的数据,这时候ES要进行数据迁移,数据迁移一般是新建一个索引,给这个新索引分配足够的分片数,再将数据移到新索引中。新索引的创建是很消耗资源的,因此最好在创建一个索引前预先计算好容量需求。
(2)新建文档
在索引 demo 中,创建第一个文档。
![812122f3761076990fd4f9a938cd192b.png](https://i-blog.csdnimg.cn/blog_migrate/2de709d041c7bb8e925640b41311a553.jpeg)
(3)查询索引
查询整个索引的情况。
curl http://localhost:9200/demo?pretty
![bc8e55dddea40bc27f691f150b7c3454.png](https://i-blog.csdnimg.cn/blog_migrate/cbf58190367924e4fe3bd6c300a148da.jpeg)
这个索引demo包含5个分片,副本数为1。
还可以用_search命令来查询索引里的具体文档,不带任何参数查询所有文档。
curl http://localhost:9200/demo/_search?pretty
![94dc4edcf094ed06f9035346dfa39d73.png](https://i-blog.csdnimg.cn/blog_migrate/ba1b97426e9372e6555d22706a3ab85d.jpeg)
根据主键查询文档:
curl http://localhost:9200/demo/_doc/1?pretty
![d2b5060051872275730aa46245efecbd.png](https://i-blog.csdnimg.cn/blog_migrate/8d6e9ab911c958bb8ad800a4762b3163.jpeg)
_version=1说明这个主键的内容被更新了1次。
下面 found = false,表示没有找到该主键的文档。
![b8a18cd21553aafe5247b639d4ad86cb.png](https://i-blog.csdnimg.cn/blog_migrate/14bc0a34232d6d4fc45c0bbb843430a3.jpeg)
(4)更新文档
更新文档之后,版本号 version 会加1。
![ea9b741a3b7c1aa811d961e07b811725.png](https://i-blog.csdnimg.cn/blog_migrate/fbf37539be7d9eab5197232c49302615.jpeg)
(5)删除文档
curl -XDELETE localhost:9200/demo/_doc/1?pretty
![f02254ecf8148b26d2dcb518f58f58f8.png](https://i-blog.csdnimg.cn/blog_migrate/0d62489c80f51be2eb69f89c6eb19f4e.jpeg)
删除文档之后,再查询主键=1的文档,发现已经找不到了。
curl localhost:9200/demo/_doc/1
{"_index":"demo