关于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 集群节点的详细信息,如下图所示。
二、索引相关操作
ES中一个索引就类似于数据库中一个数据库的概念。当然ES中的数据支持结构化、非结构化数据。
先查询ES集群中有哪些索引:
curl http://localhost:9200/_cat/indices?v
(1)创建新索引
创建一个新索引-demo,然后再次查询索引列表。这时,已经有新增的索引demo了。
curl -XPUT localhost:9200/demo
再看看ES的数据目录里是不是创建了相应的文件:
ls dataodes0indices
其中 data 是 ES 集群的数据所在目录,nodes 下是集群的节点列表,有多少个节点就有多少个子目录,这里演示系统只有一个名称为0的子目录,说明nodes 下只有一个节点,如果再增加一台服务器,就会有0和1两个子目录。
ikxY1EscQ0SgbFxrp-X-qw 是demo索引的uuid,里面有0-4 个子目录,代表了5个分片。ES 默认对每个索引分配5个分片(shard),每个分片里数据在进行分段(segment),数据会保存在分段里面。
segments_3 就是一个分段,数据会保存在分段里面。如果是集群配置,则每个分片会根据配置参数会存在多个副本(replica)。
当索引中的数据(也就是文档)量超过原定的分片容量时,无法保存新的数据,这时候ES要进行数据迁移,数据迁移一般是新建一个索引,给这个新索引分配足够的分片数,再将数据移到新索引中。新索引的创建是很消耗资源的,因此最好在创建一个索引前预先计算好容量需求。
(2)新建文档
在索引 demo 中,创建第一个文档。
(3)查询索引
查询整个索引的情况。
curl http://localhost:9200/demo?pretty
这个索引demo包含5个分片,副本数为1。
还可以用_search命令来查询索引里的具体文档,不带任何参数查询所有文档。
curl http://localhost:9200/demo/_search?pretty
根据主键查询文档:
curl http://localhost:9200/demo/_doc/1?pretty
_version=1说明这个主键的内容被更新了1次。
下面 found = false,表示没有找到该主键的文档。
(4)更新文档
更新文档之后,版本号 version 会加1。
(5)删除文档
curl -XDELETE localhost:9200/demo/_doc/1?pretty
删除文档之后,再查询主键=1的文档,发现已经找不到了。
curl localhost:9200/demo/_doc/1
{"_index":"demo