本文是以ES6.2.4 为例子

1. 创建索引;

默认的分片是5

Default for number_of_shards is 5

默认的副本是1
Default for number_of_replicas is 1 (ie one replica for each primary shard)

 {
    "settings" : {
        "index" : {
            "number_of_shards" : 3, 
            "number_of_replicas" : 2 
        }
    }
}

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

2. 删除索引

DELETE /twitter

上面的例子删除了一个名为twitter的索引。需要指定索引或通配符表达式。别名不能用于删除索引。通配符表达式解析为仅匹配具体索引。

delete index API还可以应用于多个索引,可以使用逗号分隔的列表,也可以应用于所有索引(小心!)使用_all或*作为索引。

要禁用允许通过通配符或_all删除索引,请设置action.destructive_requires_name 设置为true。还可以通过群集更新设置api更改此设置。

 3. 查询索引

3. 验证索引是否存在

200 说明存在  404 说明不存在。  注意: 

此请求不区分索引和别名,即如果存在具有该名称的别名,也会返回状态代码200

4. 打开和关闭索引    /{index}/_close and /{index}/_open

 

 5. 收缩索引

收缩索引API允许您将现有索引收缩为具有较少主碎片的新索引。目标索引中请求的主碎片数必须是源索引中碎片数的一个因子。例如,一个包含8个主碎片的索引可以缩小为4、2或1个主碎片,或者一个包含15个主碎片的索引可以缩小为5、3或1个。如果索引中的碎片数是质数,则只能将其收缩为单个主碎片。收缩之前,索引中每个碎片的(主或副本)副本必须存在于同一节点上。

收缩工作如下:

首先,它创建一个新的目标索引,其定义与源索引相同,但主碎片的数量较少。

然后将源索引中的段硬链接到目标索引中。(如果文件系统不支持硬链接,则会将所有段复制到新索引中,这是一个非常耗时的过程。)

最后,它恢复目标索引,就像它是一个刚刚重新打开的封闭索引一样。

准备收缩指数

为了缩小索引,必须将索引标记为只读,并且索引中每个碎片的(主或副本)副本必须重新定位到同一节点,并保持健康状态为绿色。

这两个条件可通过以下要求实现:

首先,它创建一个新的目标索引,其定义与源索引相同,但主碎片的数量较少。

然后将源索引中的段硬链接到目标索引中。(如果文件系统不支持硬链接,则会将所有段复制到新索引中,这是一个非常耗时的过程。)

最后,它恢复目标索引,就像它是一个刚刚重新打开的封闭索引一样。

具体参考官网: Shrink Index | Elasticsearch Reference [6.2] | Elastic

6. 分割索引: https://www.elastic.co/guide/en/elasticsearch/reference/6.2/indices-split-index.html

7. 滚动索引: Rollover Index | Elasticsearch Reference [6.2] | Elastic

当现有索引被认为太大或太旧时,滚动索引API将别名滚动到新索引。

API接受一个别名和一系列条件。别名必须仅指向单个索引。如果索引满足指定的条件,则会创建一个新索引,并将别名切换为指向新索引。

8.

定义字段

 给创建的索引定义字段

http://localhost:9200/twitter/_doc/_mapping?pretty

{
  "_doc": {
      "properties": {
        "title": {
          "type": "text"
        },
        "body": {
          "type": "text"
        },
        "tags": {
          "type": "keyword"
        },
        "published_on": {
          "type": "keyword"
        },
        "comments": {
          "type": "nested",
          "properties": {
            "name": {
              "type": "text"
            },
            "comment": {
              "type": "text"
            },
            "age": {
              "type": "short"
            },
            "rating": {
              "type": "short"
            },
            "commented_on": {
              "type": "text"
            }
          }
        }
      }
    
  }
}


添加数据:注意  这个 “_doc” 类型要和才创建的时候一直,否则会报错

给索引添加 字段

字段更新

更新字段映射

通常,无法更新现有字段的映射。这条规则有一些例外。例如:

可以将新属性添加到对象数据类型字段中。

新的多字段可以添加到现有字段中。

可以更新上面的ignore_参数。

PUT my_index 
{
  "mappings": {
    "_doc": {
      "properties": {
        "name": {
          "properties": {
            "first": {
              "type": "text"
            }
          }
        },
        "user_id": {
          "type": "keyword"
        }
      }
    }
  }
}

PUT my_index/_mapping/_doc
{
  "properties": {
    "name": {
      "properties": {
        "last": { 
          "type": "text"
        }
      }
    },
    "user_id": {
      "type": "keyword",
      "ignore_above": 100 
    }
  }
}

创建一个索引,在名称对象数据类型字段下有第一个name字段,还有一个user_id字段。
在“名称对象”字段下添加最后一个字段。
从默认值0更新上面的忽略设置。

9. 查询映射

get mapping API允许检索索引或索引/类型的映射定义。

参考官网:Indices APIs | Elasticsearch Reference [6.2] | Elastic


 

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐