irpas技术客

ES 索引的操作 创建,删除,查询_LZHH_2008_es索引

大大的周 2952

本文是以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

?


1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,会注明原创字样,如未注明都非原创,如有侵权请联系删除!;3.作者投稿可能会经我们编辑修改或补充;4.本站不提供任何储存功能只提供收集或者投稿人的网盘链接。

标签: #es索引 #本文是以ES624 #为例子1 #for #is #5默认的副本是1Default