新建索引
索引名字必须全小写。 返回值acknowledged为true即为成功!索引名不得重复!
Elasticsearch默认给的一个索引设置5个分片1个副本,索引的分片数一旦指定后无法修改,副本数可以通过命令修改。
自定义分片和副本数命令如下:
更新副本
使原来的副本数变为2
读写权限
对索引的读写操作进行限制
参数有:
blocks.read_only:true 设置当前索引只读不允许写和更新
blocks.read:true 禁止对当前索引进行读操作
blocks.write:true 禁止对当前索引进行写操作
演示不能对当前索引写操作
恢复写入权限直接改为false就行了
查看索引
查看多个索引
GET blog,QQ,weChat/_settings
查看所有索引
GET _all/_settings
删除索引
一旦删除索引,数据就不复存在,请注意备份
DELETE blog
如果删除不存在的索引也会报错
索引的打开和关闭
一个关闭了的索引几乎不占用系统资源
关闭命令:索引不再读写
POST blog/_close
开启命令:正常使用
POST blog/_open
- 同时可支持关闭开启多个索引,索引名以逗号隔开即可
- 如果索引名不存在,会报错!可以通过ignore_unavailable参数来操作存在的索引 POST a,b,c/_close?ignore_unavailable=true
- 关闭所有 POST _all/_close
- 关闭以book开头的索引 POST book*/_close
复制索引
_reindex API 可以把文档从一个索引(源索引)复制到另一个索引(目标索引),目标索引不会复制源索引的配置信息。
把blog索引的文档复制到blog_new 索引中的命令如下:'
也可以在索引源中增加type和query来限制文档,如把blog索引库中article类型下title含有git关键字的文档复制到新的blog_new索引中
收缩索引
一个索引的分片初始化后无法修改,但是可以使用shrink index API 提供的缩小索引分片数机制。不过收缩分片数必须是原始分片数的因子,比如4个分片的索引可以收缩为2、1。如果分片数为素数,那么只能收缩为1个分片。收缩索引之前,索引中的分片都要在同一个节点上。
其实收缩索引的过程就是:先创建一个新的目标索引,设置与源索引相同,但是新的索引分片数量减少
然后把源索引硬链接到目标索引,最后新的索引恢复使用
注意:在收缩之前,索引必须设置为只读,所有分片都会复制到一个相同的节点并且节点健康为绿色的。以收缩blog索引为例,命令如下:
blog_new 为目标索引,在收缩时可指定目标索引的分片数、副本数等配置信息,命令如下
索引别名
给一个索引或者多个索引起的另一名字
索引test1取个别名为alias1
移除别名
支持一次给多个索引创建同一个别名
换个写法
同样可直接一次性移除别名
增加别名和移除别名也可以混合使用:如
设置别名之后,对索引别名的操作等同于索引的操作
如果别名一对多个索引,使用别名查询就会报错,因为谁也不知道该往哪个索引库中取文档
参数为索引名同样支持通配符,
获取某个索引的别名
查看“alias1”对应那些索引的别名
查看ES集群上所有的可用别名