侧边栏壁纸
  • 累计撰写 48 篇文章
  • 累计创建 33 个标签
  • 累计收到 2 条评论

目 录CONTENT

文章目录

ES别名索引创建规范

Angus
2023-01-11 / 0 评论 / 0 点赞 / 126 阅读 / 4138 字

场景1:需要按日期分索引的

索引ID理论上随机生成

步骤

1. 创建ILM滚动规则

PUT _ilm/policy/demo_ilm_policy
{
  "policy": {
    "phases": {
      "hot": {
        "min_age": "0ms",
        "actions": {
          "rollover": {
            "max_size": "30gb",
            "max_age": "2d"
          }
        }
      },
      "delete": {
        "min_age": "7d",
        "actions": {
          "delete": {
            "delete_searchable_snapshot": true
          }
        }
      }
    }
  }
}

该规则的意思是 索引大小到达30GB 或者索引创建时间达到7天则滚动下一个索引,删除7天后的数据

2. 创建index_template

PUT _index_template/demo
{
  "index_patterns": [
    "demo-*"
  ],
  "template": {
    "settings": {
      "index": {
        "refresh_interval": "5s",
        "number_of_shards": "5",
        "number_of_replicas": "0",
        "lifecycle": {
         ### 这里最重要
          "name": "demo_ilm_policy",
          "rollover_alias": "demo"
        }
      }
    },
    "mappings": {
      "properties": {
        "message": {
          "type": "text"
        }
      }
    },
    "aliases": {}
  }
}

3. 创建首个索引

将索引名做URL编码 image-1673420061829 https://tool.chinaz.com/tools/urlencode.aspx

PUT %3Cdemo-%7Bnow%2Fd%7Byyyy.MM.dd%7C%2B08%3A00%7D%7D-000001%3E
{
  "aliases": {
    "demo": {
      "is_write_index": true
    }
  }
}

创建索引 demo-2022.01.11-000001

4. SLM备份设置(备选)

和管理员拿到备份的 repository 名称

PUT _slm/policy/filebeat
{
  "name": "<demo-{now/d-1d{yyyy.MM.dd|+08:00}}>",
  "schedule": "0 30 17 * * ?",
  "repository": "dev_backup",
  "config": {
    "indices": [
      "<demo-{now/d-1d{yyyy.MM.dd|+08:00}}-*>"
    ],
    "ignore_unavailable": true,
    "include_global_state": false
  },
  "retention": {
    "expire_after": "60d",
    "min_count": 7,
    "max_count": 60
  }
}

对索引 demo-* 按天做 snapshot
因为schedule是以UTC时间执行的,所以设置每天 17:30 (UTC)执行,也就是凌晨1:30分执行。
保留最近 60 天备份,最少保留 7 个备份,最多保留 60 个备份。

5. 写入与查询

写入与查询都使用别名 demo 来操作

PUT demo/_doc/1
{
   "message":"1212313"
}
GET demo/_search

场景2:不需要按日期分索引的

索引ID允许指定生成,如果ID需要使用ID查询的话,集群只能同时存在一个索引

步骤

1. 创建index_template

PUT _index_template/demo
{
  "index_patterns": [
    "demo-000*"
  ],
  "template": {
    "settings": {
      "index": {
        "refresh_interval": "5s",
        "number_of_shards": "5",
        "number_of_replicas": "0"
      }
    },
    "mappings": {
      "properties" : {
        "message" : {
          "type" : "text"
        }
      }
    },
    "aliases": {}
  }
}

2. 创建首个索引

PUT demo-000001
{
  "aliases": {
    "demo": {
      "is_write_index": true
    }
  }
}

3. 写入与查询

写入与查询都使用别名 demo 来操作

PUT demo/_doc/1
{
   "message":"1212313"
}
GET demo/_search
0

评论区