前言:最近公司需要解决es下单个索引过大(大概几亿-十几个亿的数据)导致查询过慢的问题,解决方法是按天创建索引,挂载到别名之下,再去根据具体业务需求定时删除或者卸载相关索引(30天)
一、什么是Aliases
- 个人理解为别名,可以使几个索引使用一个别名,这样查找的时候相当于分表查找再聚合的效果
二、如何操作
1.主要演示记录一下该如何挂载别名以及注意点 2.这里准备的将test_auto_index_20200405和test_auto_index_20200404 挂在再别名 test_auto_index_all下,如图: 3.如何挂载
- 创建索引时设置,但是注意默认该索引别名就是可以支持增删改查,如果创建二个默认,则无法分辨写入哪个索引
PUT test_auto_index_20200405
{
"settings": {
"number_of_shards": 2,
"number_of_replicas": 1,
"refresh_interval": "2s",
"max_result_window": 2000000000
},
"mappings": {
"properties": {
"age": {
"type": "long"
},
"gender": {
"type": "keyword"
},
"sex": {
"type": "keyword"
},
"userName": {
"type": "keyword"
}
}
},
"aliases": {
"test_auto_index_all": {}
}
}
- 创建别名时设置,配置相关索引,并设置读写索引的设置
POST _aliases
{
"actions": [
{
"add": {
"index": "test_auto_index_20200404",
"alias": "test_auto_index_all",
"is_write_index": false
}
},
{
"add": {
"index": "test_auto_index_20200405",
"alias": "test_auto_index_all",
"is_write_index": true
}
}
]
}
- 查询挂载正确与否
GET test_auto_index_all/_alias
三、坑点
1.如果一个别名下挂载多个索引,要指定唯一一个写的索引,否则会写入失败
尤其是采用创建索引的时候指定别名的方式,那么默认都可以进行写,插入报错如下: 2.查询的时候,由于聚合数量较多,kibana默认展示10000 加上参数"track_total_hits": true即可,但是会消耗一定资源
四、总结
|