5.1、Elasticsearch集群入门 —— 索引管理


5.1.1、新建索引

5.1.2、更新副本数

5.1.3、设置索引的读写权限

5.1.4、查看索引

5.1.5、删除索引

5.1.6、索引的打开和关闭

5.1.7、复制索引

5.1.8、收缩索引

5.1.9、索引别名

-—————————————-

5.1.1、新建索引

索引名称 不能有大写字母

使用Kibana的DevTools工具进行

创建索引:

PUT test

响应:

1
2
3
4
5
{
"acknowledged" : true,
"shards_acknowledged" : true,
"index" : "test"
}

并且不能重复创建

-————————————

创建 5个分片,3个副本的索引:

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

5.1.2、更新副本数

ES 支持修改已存在索引的副本数,如下:

1
2
3
4
PUT test/_settings
{
"number_of_replicas": 3
}

响应:

1
2
3
{
"acknowledged" : true
}

5.1.3、设置索引的读写权限

“blocks.read_only”: false ———— 当前索引只读,不允许写和更新

“blocks.read”: true ———— 禁止读

“blocks.write”: true ———— 禁止写

示例

设置禁止写

1
2
3
4
PUT test/_settings
{
"blocks.write": true
}

尝试写入

1
2
3
4
PUT test/article/1
{
"tile": "Java 虚拟机"
}

返回错误

重新设置允许写

1
2
3
4
PUT test/_settings
{
"blocks.write": false
}

再试尝试写入, 写入成功:

5.1.4、查看索引

GET test/_settings

查看多个索引:GET test,girl/_settings

查看所有索引:GET _all/_settings

5.1.5、删除索引

DELETE test2

响应表示成功:

1
2
3
{
"acknowledged" : true
}

删除不存在的索引会报错:404

5.1.6、索引的打开和关闭

一个关闭了的索引,基本不占用系统资源;

  • POST test/close ———— 关闭 test 索引
  • _POST test,girl/_close ———— 关闭 多个索引
  • POST _all/_close ———— 关闭所有索引
  • POST test*/_close ———— 关闭test开头的索引

5.1.7、复制索引

_redinx操作, 把文档 从 源索引 复制到 目标索引,但目标索引的分片数、副本数需要单独设置。

全量复制:

1
2
3
4
5
POST _reindex
{
"source": {"index": "test"},
"dest": {"index": "girl"}
}

把 test 索引下,type为article下,title中含有关键字 java的文档,复制到 girl 索引中:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
POST _reindex
{
"source": {
"index": "test",
"type": "article",
"query": {
"term": {
"FIELD": {
"title": "java"
}
}
}
},
"dest": {"index": "girl"}
}

5.1.8、收缩索引

一个索引分片初始化以后无法再做修改,但可以使用shrink index AP提供的分片数机制,把一个索引变成更少的索引。

收缩以后的分片数 是 原始分片数的因子;比如 8个 可以收缩成 4,2,1;7,11只能收缩成1个;

5.1.9、索引别名

给一个索引 起另一个名字

1
2
3
4
5
6
7
8
9
10
11
POST /_aliases
{
"actions": [
{
"add": {
"index": "test",
"alias": "alias_test"
}
}
]
}

移除别名

1
2
3
4
5
6
7
8
9
10
11
POST /_aliases
{
"actions": [
{
"remove": {
"index": "test",
"alias": "alias_test"
}
}
]
}

查看索引的别名

GET /test/_alias

1
2
3
4
5
GET /test/_analyze
{
"analyzer":"ik_smart",
"text":"洪荒之力"
}