新版Elasticsearch 7.x 命令行快速入门

关于Elasticsearch 的介绍,可以参考之前的文章:



一、_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 data\\nodes\\0\\indices\\

其中 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","_type":"_doc","_id":"1","found":false}



三、查询条件

用_search子命令来查询文档,query参数可指定查询条件。

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

不给参数,会输出所有文档。


其中,Hits是统计信息,给出文档总数:


查询字段名name中包含rickie的记录。


如果加上”_source”:false参数,则查询结果不显示文档内容,只显示文档序号。

指定某些字段,比如只需要返回”name”字段。



四、用_all查询所有索引

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

返回结果包括了索引中的类别列表。Setting里是索引的元数据信息,分配了5个分片。