0x01 为啥提到这个
- 当然是遇到痛点了。
当我们有3-5个数据节点,但是没有指定分片数的时候,那么可能产生一个后果: 新创建的索引文件仅保存在一个数据节点上。
这会产生两个问题:写入慢, 查询慢。
怎么解决这个问题?下面聊到索引的两个概念:
-
分片数(shard)
- 分片数是指一个索引文件,可以分拆成几份,可以在物理上实现分布式存储。
- 优点是可以提高文档的吞吐速度,发挥多数据节点价值
- 分片数设置:一般设置成数据节点数即可。 后期有优化再更新
-
副本数(replica)
- 同一份文档有多个备份。主要解决数据节点发生单点故障时使用。
- 例: 对于日志型文档,如果无所谓的话,可以把 副本数 设置为:
0
如果设置成1
的话,那么就需要占用两倍的存储空间。
0x02 如何使用
一般情况下,我们采用的按天自动生成索引的方式进行工作,如果要对每一个索引去设置分片数和副本数,就比较累了。
这时候,就是索引模版登场的时机了。
使用前,应该了解的信息:
1、索引模版:通过索引名称的通配符,去作用新创建的索引,无法更新已存在的索引。
2、索引模版:可以把上述 分片数、副本数等信息,自动作用于新创建的索引。
0x03 来个例子
这里的场景:
1、有三个数据节点,
2、设置为3个分片数
3、无需副本数
4、把所有属性都保存下来
再来几个常用指令, 直接在kibana的开发者窗口执行:
- 创建索引模版
PUT _template/sit
{
"index_patterns": ["sit*"],
"settings": {
"number_of_shards": 3,
"number_of_replicas": 0
},
"mappings": {
"dynamic_templates": [
{
"all_fields": {
"match_mapping_type": "*",
"mapping": {
"type": "{dynamic_type}",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
}
}
}
]
}
}
- 查看索引模版
GET _template/sit
- 创建索引
PUT /sit-3024.08.17
- 查看索引
GET /sit-3024.08.17