Create Index

Create Index API用于在Elasticsearch中手动创建索引。Elasticsearch中的所有文档都存储在一个索引或另一个索引中。

最基本的命令如下:

  1. PUT twitter

这将创建一个名为twitter的索引,其默认设置为all。

Index Settings

创建的每个索引都可以具有与其关联的特定设置,在正文中定义:

  1. PUT twitter
  2. {
  3. "settings" : {
  4. "index" : {
  5. "number_of_shards" : 3, #@1
  6. "number_of_replicas" : 2 #@2
  7. }
  8. }
  9. }

@1: number_of_shards的默认值为1
@2: number_of_replicas的默认值为1(即每个主要分片的一个副本)

或更简化:

  1. PUT twitter
  2. {
  3. "settings" : {
  4. "number_of_shards" : 3,
  5. "number_of_replicas" : 2
  6. }
  7. }

有关创建索引时可以设置的所有不同索引级别设置的更多信息,请查看索引模块部分。

Mappings

create index API允许提供映射定义:

  1. PUT test
  2. {
  3. "settings" : {
  4. "number_of_shards" : 1
  5. },
  6. "mappings" : {
  7. "properties" : {
  8. "field1" : { "type" : "text" }
  9. }
  10. }
  11. }

Aliases

create index API还允许提供一组别名:

  1. PUT test
  2. {
  3. "aliases" : {
  4. "alias_1" : {},
  5. "alias_2" : {
  6. "filter" : {
  7. "term" : {"user" : "kimchy" }
  8. },
  9. "routing" : "kimchy"
  10. }
  11. }
  12. }

Wait For Active Shards 等待活动碎片

默认情况下,索引创建仅在每个分片的主副本已启动或请求超时时才返回对客户端的响应。索引创建响应将指示发生了什么:

  1. 默认情况下,索引创建仅在每个分片的主副本已启动或请求超时时才返回对客户端的响应。索引创建响应将指示发生了什么:

confirmged指示是否在集群中成功创建了索引,而shards_acknowledged指示在超时之前是否为索引中的每个分片启动了必需数量的分片副本。请注意,仍然可以确认或shards_acknowledged为false,但索引创建成功。这些值仅表示操作是否在超时之前完成。如果确认为false,那么我们在使用新创建的索引更新集群状态之前超时,但很可能很快就会创建。如果shards_acknowledged为false,那么我们在开始所需数量的分片之前超时(默认情况下只是初选),即使集群状态已成功更新以反映新创建的索引(即confirmged = true)。

我们可以更改仅等待主分片通过索引设置index.write.wait_for_active_shards启动的默认值(请注意,更改此设置也会影响所有后续写入操作的wait_for_active_shards值):

  1. PUT test
  2. {
  3. "settings": {
  4. "index.write.wait_for_active_shards": "2"
  5. }
  6. }

或者通过请求参数wait_for_active_shards:

  1. PUT test?wait_for_active_shards=2

可以在此处找到wait_for_active_shards及其可能值的详细说明。