ElasticSearch入门 官方文档翻译 - 2.Exploring Your Cluster

集群探索

REST API

现在,我们的节点(集群)已经跑起来了,下一步想着怎么跟它沟通。幸运的是,ES提供了广泛且强大的REST API用于与集群交互。下面是利用这个API,可以做的几件事情:

  • 检查你的集群、节点和索引的健康状态和各种统计信息
  • 管理你的集群、节点、索引数据和元数据
  • 对你的索引进行CRUD(创建、读取、更新和删除)和搜索操作
  • 执行高级的查询操作,像是分页、排序、过滤、脚本编写(scripting)、聚合(aggregations)和许多其它操作

集群健康

让我们从一个基础的健康检查开始,查看我们的集群是怎么工作的。我们使用CURL来干这事,当然,你也可以用其他可以发起HTTP/REST请求的工具。首先,假设我们在启动ES的同一个节点上,然后打开另一个SHELL窗口。

我们用_cat API来作集群健康检查。

curl -XGET 'localhost:9200/_cat/health?v&pretty'

响应为:

epoch      timestamp cluster       status node.total node.data shards pri relo init unassign pending_tasks max_task_wait_time active_shards_percent
1475247709 17:01:49  elasticsearch green           1         1      0   0    0    0        0             0                  -                100.0%

可以看到,我们名称为elasticsearch的集群是启动的,绿色状态。

当我们询问集群状态的时候,我们要么得到绿色、黄色或红色。绿色代表一切正常(集群功能齐全),黄色意味着所有的数据都是可用的,但是某些复制没有被分配(集群功能齐全),红色则代表因为某些原因,某些数据不可用。注意,即使是集群状态是红色的,集群仍然是部分可用的(它仍然会利用可用的分片来响应搜索请求),但是可能你需要尽快修复它,因为你有丢失的数据。

也是从上面的响应中,我们可以看到,一共有一个节点,由于里面没有数据,我们有0个分片。注意,由于我们使用默认的集群名字(elasticsearch),并且由于ES默认使用网络单播发现同台机器上的其它节点,如果你在你的网络中启动了多个节点,你就已经把她们加入到一个集群中了。在这种情形下,你可能在上面的响应中看到多个节点。

用以下命令可以获取集群中的节点列表:

curl -XGET 'localhost:9200/_cat/nodes?v&pretty'

响应为:

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的节点,是集群中唯一的一个节点。

查看所有的索引

让我们看看现在有什么索引:

curl -XGET 'localhost:9200/_cat/indices?v&pretty'

响应是:

health status index uuid pri rep docs.count docs.deleted store.size pri.store.size

这代表集群中目前还没有索引。

创建索引

现在,我们创建一个名为customer的索引,然后再次获取所有的索引:

curl -XPUT 'localhost:9200/customer?pretty'
curl -XGET 'localhost:9200/_cat/indices?v&pretty'

第一个命令使用PUT动词创建了名为customer的索引。我们简单地将pretty附加到调用的尾部,使其以美观的形式打印出JSON响应(如果有的话)。

响应如下:

health status index    uuid                   pri rep docs.count docs.deleted store.size pri.store.size
yellow open   customer 95SQ4TSUT7mWBT7VNHH67A   5   1          0            0       260b           260b

第二个命令的结果告诉我们,我们现在有一个名为customer的索引,它有5个主分片和1个复制(默认),其中包括0个文档。

你也许发现了,customer索引的健康度被标记为黄色了。回想我们之前讨论的,黄色意味着某些复制没有(或者还未)被分配。这个索引之所以这样,是因为ES默认为这个索引创建一份复制。由于现在我们只有一个节点在运行,那一份复制就分配不了了(为了高可用),直到当另外一个节点加入到这个集群后,才能分配。一旦那份复制在第二个节点上被复制,这个节点的健康状态就会变成绿色。

索引并查询一个文档

现在让我们放一些东西到customer索引中。首先要知道的是,为了索引一个文档,我们必须告诉ES这个文档要到这个索引的哪个类型下。

让我们将一个简单的客户文档索引到customer索引,external类型中,这个文档的ID是1,操作如下:

curl -XPUT 'localhost:9200/customer/external/1?pretty&pretty' -H 'Content-Type: application/json' -d'
{
  "name": "John Doe"
}
'

响应为:

{
  "_index" : "customer",
  "_type" : "external",
  "_id" : "1",
  "_version" : 1,
  "result" : "created",
  "_shards" : {
    "total" : 2,
    "successful" : 1,
    "failed" : 0
  },
  "created" : true
}

从上面的响应中,我们可以看到,一个新的客户文档在customer索引和external类型中被成功创建。文档也有一个内部id 1, 这个id是我们在索引的时候指定的。

有一个关键点需要注意,ES在你想将文档索引到某个索引的时候,并不强制要求这个索引被显式地创建。在前面这个例子中,如果customer索引不存在,ES将会自动地创建这个索引。

现在,让我们把刚刚索引的文档取出来:

curl -XGET 'localhost:9200/customer/external/1?pretty&pretty'

响应为:

{
  "_index" : "customer",
  "_type" : "external",
  "_id" : "1",
  "_version" : 1,
  "found" : true,
  "_source" : { "name": "John Doe" }
}

除了一个叫做found的字段来指明我们找到了一个ID为1的文档,和另外一个字段_source返回我们前一步中索引的完整JSON文档之外,其它的都没有什么特别之处。

删除索引

现在,让我们删除刚才创建的索引,然后在列出所有的索引:

curl -XDELETE 'localhost:9200/customer?pretty&pretty'
curl -XGET 'localhost:9200/_cat/indices?v&pretty'

响应为:

health status index uuid pri rep docs.count docs.deleted store.size pri.store.size

这表明我们成功地删除了这个索引,现在我们回到了集群中空无所有的状态。

在更进一步之前,我们再细看一下一些我们学过的API命令:

curl -XPUT 'localhost:9200/customer?pretty'
curl -XPUT 'localhost:9200/customer/external/1?pretty' -H 'Content-Type: application/json' -d'
{
  "name": "John Doe"
}
'
curl -XGET 'localhost:9200/customer/external/1?pretty'
curl -XDELETE 'localhost:9200/customer?pretty'

如果我们仔细研究以上的命令,我们可以发现访问Elasticsearch中数据的一个模式。这个模式可以被总结为:

 curl -<REST Verb> <Node>:<Port>/<Index>/<Type><ID>

这个REST访问模式普遍适用于所有的API命令,如果你能记住它,你就会为掌握ES开一个好头。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,324评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,303评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,192评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,555评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,569评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,566评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,927评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,583评论 0 257
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,827评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,590评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,669评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,365评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,941评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,928评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,159评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,880评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,399评论 2 342

推荐阅读更多精彩内容