关于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删除批量索引curl es删除索引命令_删除索引 命令


二、索引相关操作

ES中一个索引就类似于数据库中一个数据库的概念。当然ES中的数据支持结构化、非结构化数据。

先查询ES集群中有哪些索引:

curl http://localhost:9200/_cat/indices?v


es删除批量索引curl es删除索引命令_Elastic_02


(1)创建新索引

创建一个新索引-demo,然后再次查询索引列表。这时,已经有新增的索引demo了。

curl -XPUT localhost:9200/demo


es删除批量索引curl es删除索引命令_es删除批量索引curl_03


再看看ES的数据目录里是不是创建了相应的文件:

ls dataodes0indices


es删除批量索引curl es删除索引命令_es删除批量索引curl_04


其中 data 是 ES 集群的数据所在目录,nodes 下是集群的节点列表,有多少个节点就有多少个子目录,这里演示系统只有一个名称为0的子目录,说明nodes 下只有一个节点,如果再增加一台服务器,就会有0和1两个子目录。

ikxY1EscQ0SgbFxrp-X-qw 是demo索引的uuid,里面有0-4 个子目录,代表了5个分片。ES 默认对每个索引分配5个分片(shard),每个分片里数据在进行分段(segment),数据会保存在分段里面。


es删除批量索引curl es删除索引命令_es删除批量索引curl_05


segments_3 就是一个分段,数据会保存在分段里面。如果是集群配置,则每个分片会根据配置参数会存在多个副本(replica)。


es删除批量索引curl es删除索引命令_子目录_06


当索引中的数据(也就是文档)量超过原定的分片容量时,无法保存新的数据,这时候ES要进行数据迁移,数据迁移一般是新建一个索引,给这个新索引分配足够的分片数,再将数据移到新索引中。新索引的创建是很消耗资源的,因此最好在创建一个索引前预先计算好容量需求。

(2)新建文档

在索引 demo 中,创建第一个文档。


es删除批量索引curl es删除索引命令_子目录_07


(3)查询索引

查询整个索引的情况。

curl http://localhost:9200/demo?pretty


es删除批量索引curl es删除索引命令_数据_08


这个索引demo包含5个分片,副本数为1。

还可以用_search命令来查询索引里的具体文档,不带任何参数查询所有文档。

curl http://localhost:9200/demo/_search?pretty


es删除批量索引curl es删除索引命令_Elastic_09


根据主键查询文档:

curl http://localhost:9200/demo/_doc/1?pretty


es删除批量索引curl es删除索引命令_数据_10


_version=1说明这个主键的内容被更新了1次。

下面 found = false,表示没有找到该主键的文档。


es删除批量索引curl es删除索引命令_数据_11


(4)更新文档

更新文档之后,版本号 version 会加1。


es删除批量索引curl es删除索引命令_数据_12


(5)删除文档

curl -XDELETE localhost:9200/demo/_doc/1?pretty


es删除批量索引curl es删除索引命令_数据_13


删除文档之后,再查询主键=1的文档,发现已经找不到了。

curl localhost:9200/demo/_doc/1
{"_index":"demo