本文翻译自:https://www.elastic.co/guide/en/elasticsearch/reference/current/_list_all_indices.html
本文是Elasticsearch的入门文档,将会介绍ElasticSearch中索引(index)的相关情况。
列出所有的索引
这个命令可以查看所有的索引:
GET /_cat/indices?v
返回结果是:
health status index uuid pri rep docs.count docs.deleted store.size pri.store.size
这只是意味着在搜索的集群中没有任何索引。
创建索引
现在我们创建一个名为“customer”的索引,然后再次列出所有索引:
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 95SQ4TSUT7mWBT7VNHH67A 5 1 0 0 260b 260b
第二个命令的结果告诉我们,我们现在有一个名为customer的索引,它有5个主分片和1个副本(默认值),它包含0个文档。
你可能还会注意到,客户索引的黄色健康状况已被标记。从以前的讨论中回想一下,黄色意味着某些副本尚未分配。这个索引发生的原因是因为Elasticsearch默认为此索引创建了一个副本。由于我们目前只有一个节点正在运行,所以一个副本不能被分配(为了高可用性,单节点情况中副本和主分片都在一台机器上),直到另一个节点加入集群的时间点为止。一旦该副本被分配到第二个节点上,该索引的运行状况将变为绿色。
索引和查询文档
我们现在把一些东西放在我们自己的索引中。在此之前要记住,为了索引一个文档,我们必须告诉Elasticsearch应该去哪个类型的索引。
我们将一个简单的客户文档索引到客户索引的“external”类型中,ID为1,如下所示:
PUT /customer/external/1?pretty
{
"name": "John Doe"
}
返回:
{
"_index" : "customer",
"_type" : "external",
"_id" : "1",
"_version" : 1,
"result" : "created",
"_shards" : {
"total" : 2,
"successful" : 1,
"failed" : 0
},
"created" : true
}
从上面可以看出,在客户索引和外部类型中成功创建了一个新的客户文档。该文档的内部ID为1,我们在索引时指定。
重要的是要注意,在你可以将文档编入索引之前,Elasticsearch不要求你首先显式创建索引。在前面的例子中,Elasticsearch会自动创建客户索引(如果它不存在)。
我们现在检索我们刚刚编入索引的文档:
GET /customer/external/1?pretty
返回为:
{
"_index" : "customer",
"_type" : "external",
"_id" : "1",
"_version" : 1,
"found" : true,
"_source" : { "name": "John Doe" }
}
除了一个"found"字段之外,没有什么是普通的。我们发现一个文档返回,他的ID为1,另外一个字段"_source",它返回从上一步索引的完整的JSON文档。
删除索引
现在我们来删除我们刚刚创建的索引,然后再次列出所有索引:
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/external/1
{
"name": "John Doe"
}
GET /customer/external/1
DELETE /customer
如果我们仔细研究上面的命令,我们实际上可以看到我们如何访问Elasticsearch中的数据。该模式可概括如下:
<REST Verb> /<Index>/<Type>/<ID>
这个REST访问模式在所有的API命令中是如此的普及,如果你可以简单的记住它,你将会很好地掌握Elasticsearch的开始。