[翻译]ElasticSearch官方文档-关于索引

本文翻译自: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的开始。

推荐阅读更多精彩内容