1.删除模版
all_index_shards:这个模版是所有的索引遵循的模版规则。
--查询原来的模版:all_index_shards
[esadmin@oracle1 translog]$ curl -X GET "192.168.1.7:9201/_template/all_index_shards"
{
"all_index_shards": {
"order": 0,
"index_patterns": [
"*"
],
"settings": {
"index": {
"number_of_shards": "3",
"number_of_replicas": "1"
}
},
"mappings": {},
"aliases": {}
}
}
--删除它。
curl -X DELETE "192.168.1.7:9201/_template/all_index_shards"
2.给指定的模版设置分片
--创建一个模版:xsq ,匹配:xsq* 的索引都遵循这个分片规则。
[esadmin@oracle1 translog]$ curl http://192.168.1.7:9201/_cat/shards?v
index shard prirep state docs store ip node
--创建模版:xsq
curl -X PUT 192.168.1.7:9201/_template/xsq -H 'Content-Type: application/json' -d '{
"template": "xsq*",
"settings": {
"number_of_shards": 5,
"number_of_replicas": "1"
}}'
--查询模版。
curl -X GET "192.168.1.7:9201/_template/xsq"
[esadmin@oracle1 translog]$ curl -X GET "192.168.1.7:9201/_template/xsq"
{
"xsq": {
"order": 0,
"index_patterns": [
"xsq*"
],
"settings": {
"index": {
"number_of_shards": "5",
"number_of_replicas": "1"
}
},
"mappings": {},
"aliases": {}
}
}
3.插入数据
(1)给匹配模版的索引插入数据
curl -XPOST http://192.168.1.7:9201/xsq1/_doc/?pretty -H 'Content-Type: application/json' -d '
{
"id" : "1","name" : "xsq001","city" : "深圳","成绩":"非常差劲"
}'
curl -XPOST http://192.168.1.7:9201/xsq1/_doc/?pretty -H 'Content-Type: application/json' -d '
{
"id" : "2","name" : "xsq002","city" : "北京","成绩":"非常棒"
}'
--检查分片
[esadmin@oracle1 translog]$ curl http://192.168.1.7:9201/_cat/shards?v
index shard prirep state docs store ip node
xsq1 3 p STARTED 0 208b 192.168.1.7 esdb-node-3
xsq1 3 r STARTED 0 208b 192.168.1.7 esdb-node-2
xsq1 4 r STARTED 2 10.9kb 192.168.1.7 esdb-node-3
xsq1 4 p STARTED 2 10.9kb 192.168.1.7 esdb-node-2
xsq1 2 r STARTED 0 208b 192.168.1.7 esdb-node-3
xsq1 2 p STARTED 0 208b 192.168.1.7 esdb-node-1
xsq1 1 p STARTED 0 208b 192.168.1.7 esdb-node-2
xsq1 1 r STARTED 0 208b 192.168.1.7 esdb-node-1
xsq1 0 p STARTED 0 208b 192.168.1.7 esdb-node-3
xsq1 0 r STARTED 0 208b 192.168.1.7 esdb-node-1
--新建的索引匹配:xsq*,有5个分片,每个分片有一个副本。
--删除索引
--curl -X DELETE "http://192.168.1.7:9201/xsq1"
(2)创建一个不匹配xsq*的索引:xs1;
--然后使用了默认的1个副本一个分片的配置。
curl -XPOST http://192.168.1.7:9201/xs1/_doc/?pretty -H 'Content-Type: application/json' -d '
{
"id" : "1","name" : "xsq001","city" : "深圳","成绩":"非常差劲"
}'
[esadmin@oracle1 translog]$ curl http://192.168.1.7:9201/_cat/shards?v
index shard prirep state docs store ip node
xsq1 3 p STARTED 0 208b 192.168.1.7 esdb-node-3
xsq1 3 r STARTED 0 208b 192.168.1.7 esdb-node-2
xsq1 4 r STARTED 2 10.9kb 192.168.1.7 esdb-node-3
xsq1 4 p STARTED 2 10.9kb 192.168.1.7 esdb-node-2
xsq1 2 r STARTED 0 208b 192.168.1.7 esdb-node-3
xsq1 2 p STARTED 0 208b 192.168.1.7 esdb-node-1
xsq1 1 p STARTED 0 208b 192.168.1.7 esdb-node-2
xsq1 1 r STARTED 0 208b 192.168.1.7 esdb-node-1
xsq1 0 p STARTED 0 208b 192.168.1.7 esdb-node-3
xsq1 0 r STARTED 0 208b 192.168.1.7 esdb-node-1
xs1 0 p STARTED 1 5.5kb 192.168.1.7 esdb-node-2
xs1 0 r STARTED 1 5.5kb 192.168.1.7 esdb-node-1
4.给指定的索引指定分片和副本数
curl -X PUT "192.168.1.7:9201/mydb1" -H 'Content-Type: application/json' -d'
{
"settings": {
"index": {
"number_of_shards": 3,
"number_of_replicas": 2
}
}
}
'
--插入数据
curl -XPOST http://192.168.1.7:9201/mydb1/_doc/?pretty -H 'Content-Type: application/json' -d '
{
"id" : "1","name" : "xsq001","city" : "深圳","成绩":"非常差劲"
}'
--检查副本
--果然,索引:mydb1,遵循了它设置的分片和副本:3个分片,每个分片2个副本。
[esadmin@oracle1 translog]$ curl http://192.168.1.7:9201/_cat/shards?v
index shard prirep state docs store ip node
xsq1 3 p STARTED 0 208b 192.168.1.7 esdb-node-3
xsq1 3 r STARTED 0 208b 192.168.1.7 esdb-node-2
xsq1 4 r STARTED 2 10.9kb 192.168.1.7 esdb-node-3
xsq1 4 p STARTED 2 10.9kb 192.168.1.7 esdb-node-2
xsq1 2 r STARTED 0 208b 192.168.1.7 esdb-node-3
xsq1 2 p STARTED 0 208b 192.168.1.7 esdb-node-1
xsq1 1 p STARTED 0 208b 192.168.1.7 esdb-node-2
xsq1 1 r STARTED 0 208b 192.168.1.7 esdb-node-1
xsq1 0 p STARTED 0 208b 192.168.1.7 esdb-node-3
xsq1 0 r STARTED 0 208b 192.168.1.7 esdb-node-1
xs1 0 p STARTED 1 5.5kb 192.168.1.7 esdb-node-2
xs1 0 r STARTED 1 5.5kb 192.168.1.7 esdb-node-1
mydb1 2 r STARTED 1 5.5kb 192.168.1.7 esdb-node-3
mydb1 2 r STARTED 1 5.5kb 192.168.1.7 esdb-node-2
mydb1 2 p STARTED 1 5.5kb 192.168.1.7 esdb-node-1
mydb1 1 r STARTED 0 208b 192.168.1.7 esdb-node-3
mydb1 1 p STARTED 0 208b 192.168.1.7 esdb-node-2
mydb1 1 r STARTED 0 208b 192.168.1.7 esdb-node-1
mydb1 0 p STARTED 0 208b 192.168.1.7 esdb-node-3
mydb1 0 r STARTED 0 208b 192.168.1.7 esdb-node-2
mydb1 0 r STARTED 0 208b 192.168.1.7 esdb-node-1
--重新插入匹配xsq* 的索引数据
curl -XPOST http://192.168.1.7:9201/xsq-index/_doc/?pretty -H 'Content-Type: application/json' -d '
{
"id" : "1","name" : "xsq001","city" : "深圳","成绩":"非常差劲"
}'
--还是遵循:5分片,1副本。
[esadmin@oracle1 translog]$ curl http://192.168.1.7:9201/_cat/shards?v
index shard prirep state docs store ip node
xsq-index 3 r STARTED 0 208b 192.168.1.7 esdb-node-3
xsq-index 3 p STARTED 0 208b 192.168.1.7 esdb-node-2
xsq-index 4 r STARTED 1 5.6kb 192.168.1.7 esdb-node-2
xsq-index 4 p STARTED 1 5.5kb 192.168.1.7 esdb-node-1
xsq-index 2 p STARTED 0 208b 192.168.1.7 esdb-node-3
xsq-index 2 r STARTED 0 208b 192.168.1.7 esdb-node-1
xsq-index 1 r STARTED 0 208b 192.168.1.7 esdb-node-2
xsq-index 1 p STARTED 0 208b 192.168.1.7 esdb-node-1
xsq-index 0 r STARTED 0 208b 192.168.1.7 esdb-node-3
xsq-index 0 p STARTED 0 208b 192.168.1.7 esdb-node-2
5.总结
(1)可以通过all_index_shards 模版设置全库所有的索引的分片规则。
(2)可以通过_template 指定匹配名称规则索引遵循分片规则。
(3)指定具体的索引遵循指定的分片规则。