文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

ElasticSearch之索引模板滚动索引实现详解

2023-05-16 12:21

关注

一. 前言

文章合集 : ? https://zhannei.baidu.com/cse/site?q=ElasticSearch&click=1&cc=jb51.net&s=&nsid=

Github : ? github.com/black-ant

CASE 备份 : ? gitee.com/antblack/ca…

ES 最近有需求涉及到滚动索引方面的概念,但是这一块一直没有太系统的了解。这一篇索性把相关的节点进行深度的学习。

针对版本 :ES 7

吐槽一下 : ES 通病,每次更新后会改来改去。你像MySQL , 更新后 SQL 至少不会有什么减少,ES每次更新,就像重做了一下,API变了不说,各种Maven版本还不能互相适配

二. 索引

在ES中,数据存储在索引中。索引是一种类似于数据库中表的数据结构,它包含了一系列的文档,每个文档有一个唯一的标识符,称为文档ID

通常一个索引包含 :分片 , 映射, 分析器等多个部分组成。我们可以通过 API 创建一个索引 :

PUT /my_index 
{
    "settings": {
        "number_of_shards": 1,
        "number_of_replicas": 0
    },
    "mappings": {
        "properties": {
            "title": {
                "type": "text"
            }
        }
    }
}

建立索引的时候可以为其配置很多 Setting 和 properties , 这些配置可以帮助我们更好的使用索引。

但是这衍生一个问题 ,如果索引特别多或者需要滚动索引的时候,每一次都需要配置,这个时候就需要我们使用索引模板了》》》

三. 索引模板

作用

索引模板定义了设置和映射,你可以在创建新索引时自动应用。Elasticsearch根据与索引名称相匹配的索引模式,将模板应用于新的索引。

索引模板只在创建索引时应用。对索引模板的改变不影响现有的索引。在创建索引的API请求中指定的设置和映射会覆盖索引模板中指定的任何设置或映射

3.1 索引模板的创建

PUT _template/test_template
{
    "order": 0,
    "index_patterns": [
        "test_*"
    ],
    "settings": {
        "index": {
            // 分片数量
            "number_of_shards": "6",
            // 刷新间隔
            "refresh_interval": "10s"
        }
    },
    "mappings": {
        "properties": {
            "createTime": {
                "type": "date",
                "format": "yyyy-MM-dd HH:mm:ss"
            },
            "requestId": {
                "type": "keyword"
            },
            "title": {
                "type": "text",
                // 分词器
                "analyzer": "standard",
                "fields": {
                    "keyword": {
                        "type": "keyword"
                    }
                }
            }
        }
    },
    "aliases": {}
}

在上面的例子中,my_template 是索引模板的名称,my_index_* 是新创建的索引的名称,number_of_shards 是设置每个新索引的分片数,timestamp 是要插入的时间戳字段。

其他核心的字段 :

Create or update index template API | Elasticsearch Guide [8.6] | Elastic

3.2 索引模板 Setting

setting 用于定义策略,包括分片,刷新等等 ,它拥有如下核心配置 :

3.3 索引映射 :mapping

注意 :还是由于版本的问题,导致每个版本的写法不一样,可能有的还会过时删除!!

四. 业务功能

4.1 创建滚动索引

背景 : ES 记录业务审计日志,每天生成大量的记录,导致单个索引过大

前置知识点 :

// 索引别名 : 指向一个或多个索引的可读写名称,它们可以被用来代替实际的索引名称
- 帮助实现索引的无缝切换,同时也可以减少修改客户端查询的需要
- 切换集群,切换测试时都可以快速修改

// ES Rollover 特性
- 允许你在索引到达一定大小或者时间上限时自动滚动到一个新的索引中
- 新索引可以是一个完全相同的结构,也可以是不同的
- 可以是在同一个 Elasticsearch 集群中的不同节点上,也可以是在不同的集群上

创建流程 :

// S1 : 创建模板
- 创建 :此处略,创建方式就是上面的模板创建案例
- 查看创建的模板 : GET _template/test_template
// S2 : 索引创建过程 (这里的实际格式为 <test-{now/d}-000001>)
PUT %3Ctest_%7Bnow%2Fd%7D-000001%3E
{
  "aliases": {
    "test_rollover": {
      "is_write_index": true
    }
  }
}
GET %3Ctest_%7Bnow%2Fd%7D-000001%3E
// S3: 为其触发手动滚动规则 (此处是有3条文档则滚动一次,此处没有数据,所以无法滚动)
POST /test_rollover/_rollover
{
    "conditions": {
        "max_docs": 3 
    }
}
// S4 : 插入文档
POST /test_rollover/_doc
{
  "businessInfo":"123"
}
// S5 : 查询当前文档数 (这里创建后已经有了多条,但是索引只有一个)
GET /test_rollover/_doc/_search
POST /test_rollover/_rollover
{
    "conditions": {
        "max_docs": 3 
    }
}
>> 再次触发滚动后,发现已经创建了新的

核心重点

4.2 创建和绑定策略

可以通过控制台绑定,也可以通过接口

PUT _ilm/policy/my_policy
{
  "policy": {
    "phases": {
      "hot": {
        "actions": {
          "rollover": {
             "max_docs": 3 
          }
        }
      },
      "delete": {
        "min_age": "30d",
        "actions": {
          "delete": {}
        }
      }
    }
  }
}
// 创建模板时进行绑定
"settings": {
    "lifecycle": {
        "name": "my_policy",
        "rollover_alias" : "test_rollover"
      }
}

总结

ES 这东西真的难受,之前用的好好的版本,换了一个版本啥也用不了,笔记白做,以上记录不能保证其他版本可用。

ES 索引模板可以帮助我们基于当前ES集群的情况和业务场景,规划出一套性能更优,场景更符合的配置。

基于滚动索引和策略(不论是脚本调用或者自动策略),都能实现按计划滚动索引,避免索引过多。

这东西现在只可意会,不可照抄!!

以上就是ElasticSearch之索引模板滚动索引实现详解的详细内容,更多关于ElasticSearch索引模板滚动索引的资料请关注编程网其它相关文章!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯