elasticsearch6.7 01.入门指南(2)
目录
2、安装(略)
默认情况下,elasticsearch 使用端口 9200 来访问它的 rest api。如果有必要,该端口也可以配置
3、探索集群
3.1 the rest api
既然我们已经启动并且运行了我们的节点(和集群),下一步是去了解如何与它通信。幸运的是,elasticsearch 提供了一个非常全面且强大的 rest api,您可以使用它来与集群进行交互。可以使用 api 来完成如下的几件事情 :
- 检查集群,节点,和索引的健康,状态和统计信息。
- 管理集群,节点和索引数据以及元数据。
- 针对索引执行 crud(create,read,update,和 delete)和搜索操作。
- 执行高级搜索,例如 paging,sorting,filtering,scripting,aggregations 等等。
3.2. cluster health(集群健康)
让我们从基本的健康检查开始,我们可以用它来看看我们的集群在做什么。我们将使用 curl 来做这件事情,当然您也可以使用任何允许您进行 http/rest 调用的工具。假设我们在同一节点上启动了 elasticsearch 并且打开了另一个命令 shell 窗口。 为了检查集群健康,我们将使用 _cat api。您可以在 kibana的控制台中通过点击 “view in console” 或者通过点击下面的 “copy as curl” 链接然后粘贴到终端中使用 curl 中运行该命令 :
#shell窗口 curl -xget 'localhost:9200/_cat/health?v&pretty' #kibana中 get /_cat/indices?v
响应如下 :
epoch timestamp cluster status node.total node.data shards pri relo init 1475247709 17:01:49 elasticsearch green 1 1 0 0 0 0 unassign pending_tasks max_task_wait_time active_shards_percent 0 0 - 100%
我们可以看到名为 “elasticsearch” 的集群处于绿色状态。
每当我们请求集群健康时,我们得到的集群状态分为绿色、黄色,和红色。
- 绿色表示一切正常(集群功能齐全)
- 黄色表示所有数据可用,但是有些副本尚未分配(集群功能齐全)
- 红色意味着由于某些原因有些数据不可用(可以使用集群的部分功能)
注意,集群是红色时,它仍然具有部分功能(例如,它将继续从可用的分片中提供搜索服务),但是您应该尽快去修复它,因为您已经丢失数据了。
另外,从上面的响应中,我们可以看到共计 1 个 node(节点)和 0 个 shard(分片),因为我们还没有在其中放入数据。请注意,由于我们使用的是默认的集群名称(elasticsearch),并且 elasticsearch 默认情况下使用单播网络来发现同一机器上的其它节点。有可能您不小心在您的电脑上启动了多个节点,默认情况下它们都会加入该群集。在这种情况下,你会在上面的响应中看到多个节点。
我们也可以获取集群的节点列表,如下所示 :
curl -xget 'localhost:9200/_cat/nodes?v' #kibana中 get /_cat/nodes?v
响应如下 :
ip heap.percent ram.percent cpu load_1m load_5m load_15m node.role master name 127.0.0.1 10 5 5 4.46 mdi * pb2sgzy
在这里,我们可以到命名为 “pb2sgzy ” 的节点名,这是目前在我们集群中的唯一节点。
3.3 list all indices(查看所有索引)
现在,让我们来查看下所有的索引 :
curl -xget 'localhost:9200/_cat/indices?v' get /_cat/indices?v
响应如下 :
health status index uuid pri rep docs.count docs.deleted store.size pri.store.size
没有具体的值,这意味着elasticsearch集群中还没有索引。
3.4 create an index(创建索引)
现在我们创建一个名为 “customer” 的索引,然后再列出所有索引 :
curl -xput 'localhost:9200/customer?pretty&pretty' curl -xget 'localhost:9200/_cat/indices?v&pretty' #kibana中 put /customer?pretty get /_cat/indices?v
这是第一个使用put
动作命令创建名为 customer
的索引。只需在调用的末尾附加pretty
命令就可以可视化地打印json响应(如果有的话)
响应如下 :
health status index uuid pri rep docs.count docs.deleted store.size pri.store.size yellow open customer 95sq4 5 1 0 0 260b 260b
第二个命令的结果告诉我们现在已经有 1 个名为customer
的索引,并且它有 5 个主分片和 1 个副本(默认值)以及0个文档。
您可能也注意到customer
索引中有一个yellow
健康标记。回想下我们先前的讨论, yellow 意味着有些副本还没有被分配。该索引发生这种情况的原因,是因为默认情况下elasticsearch为此索引创建了一个副本。因为目前只有一个节点在运行,所以在另一个节点加入集群之前,还不能分配一个副本(为了高可用性)。一旦该副本分配到第二个节点上,该索引的运行状况将变为绿色。
3.5 索引和查询文档
现在让我们放入一些东西动我们的 customer 索引中去。让我们在 customer 索引中index一个id为1的客户文档,如下所示:
curl -xput 'localhost:9200/customer/_doc/1?pretty&pretty' -d' { "name": "john doe" }' put /customer/_doc/1?pretty { "name":"john doe" }
响应如下 :
{ "_index" : "customer", "_type" : "_doc", "_id" : "1", "_version" : 1, "result" : "created", "_shards" : { "total" : 2, "successful" : 1, "failed" : 0 }, "_seq_no" : 0, "_primary_term" : 1 }
从上面我们可以看到在客户索引中成功地创建了一个新的客户文档。该文档还有一个为1的内部 id,它是我们在索引时指定的。
需要注意的是,您无需在索引文档之前先显式地创建索引。在前面的例子中,如果customer 索引事先不存在,elasticsearch 将自动的创建 customer 索引。
现在让我们检索我们刚刚索引的文档 :
curl -xget 'localhost:9200/customer/_doc/1?pretty&pretty' get /customer/_doc/1?pretty
响应如下 :
{ "_index" : "customer", "_type" : "_doc", "_id" : "1", "_version" : 1, "_seq_no" : 25, "_primary_term" : 1, "found" : true, "_source" : { "name": "john doe" } }
除了一个字段found
之外,上面没有什么特别的东西。结果说明我们找到了一个id为1的文档,其中字段_source
返回了我们从上一步索引的完整json文档。
3.6 delete an index(删除索引)
现在让我们删除刚才创建的索引并且再次列出所有索引 :
curl -xdelete 'localhost:9200/customer?pretty&pretty' curl -xget 'localhost:9200/_cat/indices?v&pretty' delete /customer?pretty get /_cat/indices?v
响应如下 :
health status index uuid pri rep docs.count docs.deleted store.size pri.store.size
这意味着索引被成功的删除,并且我们现在又回到了集群没有索引的初始状态了。
在我们继续之前,让我们仔细的看一看一些我们迄今为止学习的 api 命令 :
put /customer put /customer/_doc/1 { "name": "john doe" } get /customer/_doc/1 delete /customer
如果我们仔细的研究上面的命令,我们可以清楚的看到,我们如何访问 elasticsearch 中的数据的 pattern(模式)。该 pattern(模式)可以概括如下 :
<http verb> /<index>/<type>/<id>
这种rest访问模式在所有api命令中都是非常普遍的,如果您可以简单的记住它,对您掌握 elasticsearch 会有一个良好的开端。
上一篇: 如何用java实现一个p2p种子搜索
下一篇: Java
推荐阅读
-
读书笔记——《redis入门指南(第2版)》第四章 进阶——4.1-5
-
webwork2+spring+hibernate入门完全配置指南(2)(原创) SpringHibernateBeanWebworkMySQL
-
张高兴的 .NET Core IoT 入门指南:(三)使用 I2C 进行通信
-
《算法笔记上机实验指南》第4章 入门篇(2)---算法初步 5.6大整数运算
-
elasticsearch6.7 01.入门指南(3)
-
elasticsearch6.7 01.入门指南(1)
-
MySQL新手入门指南--快速参考 (2)_MySQL
-
读书笔记——《redis入门指南(第2版)》第三章 入门
-
读书笔记——《redis入门指南(第2版)》第四章 进阶——4.1-5
-
【笔记】《WebGL编程指南》学习-第2章WebGL入门(6-改变点的颜色))