索引管理中心

更新时间:
复制为 MD 格式

Indexing ServiceOpenStore实例的索引管理中心,提供从模板定义到数据写入的全链路管理能力,覆盖内容模板、索引模板、数据流和索引四个层级。结合索引生命周期管理(ILM),索引数据可按策略自动在热阶段、冷阶段和删除阶段之间流转,降低存储成本。

工作原理

核心概念与依赖关系

索引管理中心涉及四个核心概念:

image

  • 内容模板(Component Template)

    可复用的配置片段,包含索引的Settings、MappingsAliases配置。多个索引模板可引用同一个内容模板形成组合模板,避免重复定义相同参数。典型场景:将OpenStore存储的编解码器、生命周期策略等通用配置统一定义在内容模板中。

  • 索引模板(Index Template)

    定义索引的字段映射(Mappings)、索引设置(Settings)、别名(Aliases)和生命周期策略。通过索引模式(index_patterns)匹配数据流或索引名称,创建数据流或索引时系统自动应用匹配的模板配置后备索引。一个索引模板可直接定义配置,也可引用一个或多个内容模板组合生成。

  • 数据流(Data Stream)

    面向时间序列数据的抽象层,对外提供统一命名资源用于读写操作。内部由一个或多个自动生成的后备索引组成:写入请求始终路由到最新的后备索引(写入索引),读取请求路由到所有后备索引。数据流仅支持追加写入,适用于日志、事件、指标等持续产生且极少更新的时序数据场景。

  • 索引(Index)

    数据的实际存储单元。在数据流场景中,索引以后备索引的形式自动创建和管理。开启Indexing Service后,索引的写入部分托管在云端Elasticsearch集群中,通过云端构建加速写入性能。索引的生命周期由ILM策略自动管理,经历热阶段、冷阶段直至删除。

数据写入流程

  1. 客户端向数据流发送写入请求,每个文档必须包含@timestamp字段。

  2. 数据流根据匹配的索引模板,将数据路由到当前的写入索引(最新的后备索引)。

  3. Indexing Service在云端完成索引构建,加速写入性能。

  4. 当写入索引满足ILM滚动策略的条件(如达到指定大小或时间),自动触发Rollover,创建新的后备索引作为写入索引,旧的后备索引自动取消云端写入托管。

  5. ILM策略自动将旧的后备索引从热阶段迁移至冷阶段(OpenStore存储),直至达到删除条件后自动清理。

Indexing Service云端托管

Indexing Service将索引构建的写入部分托管在云端Elasticsearch集群中,适用于海量时序日志数据的快速写入场景。开启Indexing Service后,集群中的数据流索引和独立索引均默认在云端进行写入托管(系统索引除外)。托管索引默认3天后自动取消托管,取消托管后索引变为只读。

使用Indexing Service时注意以下事项:

  • Indexing Service按写入托管索引总大小和写入流量按量计费,建议通过数据流和ILM滚动策略优化云端托管空间。

  • 索引处于托管状态时,不兼容ILM Action中的shrink操作。需在索引取消托管后再执行shrink配置。详细信息请参见ILM-shrink

  • Indexing Service实例与用户集群的数据同步依赖apack/cube/metadata/sync任务(通过GET _cat/tasks?v命令获取任务信息),不要手动清理该任务。如果被清理,请尽快执行POST /_cube/meta/sync命令恢复,否则会影响业务写入。

  • 频繁执行Put Mapping会消耗大量计算资源,严重影响托管服务稳定性。建议在写入数据前提前定义索引模板,减少Put Mapping操作。

进入索引管理中心

仅开启Indexing Service索引构建服务或OpenStore存储的7.10版本实例支持在ES控制台使用索引管理功能。

说明

通用商业版实例可登录Kibana进入Management页面,使用Kibana的索引管理功能。不同版本的Kibana操作页面有差异,具体操作请参见对应版本的Kibana官方文档

  1. 登录阿里云Elasticsearch控制台

  2. 在左侧导航栏,单击Elasticsearch实例

  3. 进入目标实例。

    1. 在顶部菜单栏,选择资源组和地域。

    2. Elasticsearch实例中单击目标实例ID。

  4. 在左侧导航栏,选择 配置与管理 > 索引管理中心

索引管理中心包含以下页签: 数据流管理 索引管理 索引模版管理内容模板管理

管理内容模板

多个索引模板需要共享相同的Settings、MappingsAliases配置时,建议先创建内容模板,再在索引模板中引用,避免重复定义。不需要跨模板复用配置时,可跳过此步,直接在索引模板中定义所有配置。

通过控制台创建内容模板

  1. 单击内容模板管理页签。

  2. 单击创建内容模板

  3. 创建内容模板面板,输入内容模板名称备注信息,并完成内容模板配置,配置索引SettingsMappingsAliases。配置格式须严格遵循Elastic官方规范。

    Settings代码样例:

    {
      "index": {
        "lifecycle": {
          "name": "zlopenstore_default_ilm_policy"
        },
        "apack": {
          "cube": {
            "following_index": "true"
          }
        },
        "codec": "OpenIndex87",
        "refresh_interval": "1s"
      }
    }
  4. 单击配置预览,预览内容模板配置。无误后,单击确认

通过API创建内容模板

  1. 登录目标ES实例的Kibana控制台。具体操作,请参见通过Kibana连接集群

  2. Kibana主页,单击Dev Tools

  3. Console中执行Put component template API命令创建内容模板。

    以创建OpenStore内容模板为例:

    PUT _component_template/zlcomponent-openstore-index-template
    {
      "template" : {
        "settings" : {
          "index" : {
            "lifecycle" : {
              "name" : "openstore_default_ilm_policy"
            },
            "apack" : {
              "cube" : {
                "following_index" : "true"
              }
            },
            "codec" : "OpenIndex87",
            "refresh_interval" : "1s"
          }
        }
      }
    }

查看和修改内容模板

  1. 内容模板管理页面,查看已创建的内容模板。

    阿里云Elasticsearch默认创建了若干内容模板,建议不要修改这些默认模板的配置。

    • 使用数量表示该模板被引用的索引模板数量。将鼠标悬浮在使用数量上,可查看引用该内容模板的索引模板名称。

    • 已被引用的内容模板无法删除,需要先通过修改对应的索引模板解绑后才可删除。

  2. 单击目标内容模板右侧操作列下的修改

  3. 修改内容模板面板,修改模板信息,单击确认

创建索引模板

创建数据流前,必须先创建匹配的索引模板来定义后备索引的结构和生命周期策略。创建过程分为两步:配置索引生命周期策略(可选)和配置索引模板信息。

  1. 单击 索引模版管理页签,单击 创建索引模板

  2. 可选: 创建索引模板面板,配置索引生命周期策略。

    如果无需对数据流后备索引进行生命周期策略管理,单击 跳过此步即可。建议配置生命周期策略,通过ILM自动管理后备索引的滚动更新和数据迁移,优化云端托管空间并降低存储成本。

    关键参数

    说明

    索引生命周期策略

    • 新建索引生命周期策略:创建新的索引生命周期策略。

    • 选择已有索引生命周期策略:选择集群中已存在的生命周期策略。

    策略名称

    • 选择新建索引生命周期策略时,需要自定义输入。

    • 选择已有索引生命周期策略时,在下拉列表中选择集群中已有的生命周期策略。对应策略的其他配置会自动应用到当前索引模板中,可在此基础上修改。

    热阶段

    默认开启,不可关闭。

    开启滚动更新

    建议开启。ILM默认每10分钟检测一次符合策略标准的索引,索引满足Rollover条件后可能不会立即触发滚动,可通过indices.lifecycle.poll_interval参数修改检测周期。不配置滚动策略时,索引数据会全量存储在Indexing Service中,将增加云托管费用。

    取消托管时间

    默认3天,到期后自动退出Indexing Service写入托管,减少计费开销。如果设置的时长超过冷阶段或删除阶段的开始时间,索引进入相应阶段后会自动取消托管。取消托管后索引变为只读。

    重要

    长期数据托管会产生索引托管存储费用,建议在索引不再有写入后及时设置取消托管。云端对写入托管时长及托管Shard数有相关限制,详细信息请参见OpenStore存储引擎

    冷阶段

    • OpenStore 自定义冷热存储版本:支持开启并配置冷阶段。

    • OpenStore 智能混合存储版本:无冷阶段。

    OpenStore存储

    开启冷阶段后才可配置。适用于查询复杂度大、海量存储成本高的场景,详细信息请参见Openstore存储计算分离(高性能检索)引擎

    注意事项:

    • 仅新购时开启了OpenStore 自定义冷热存储的7.10内核增强版Indexing Service实例支持配置OpenStore。

    • 开启冷阶段和OpenStore存储后,到达索引迁移时间时,系统自动迁移数据至冷数据节点及OpenStore存储。

    删除阶段

    设置索引的删除时间。对于OpenStore 智能混合存储,在索引删除前,Elasticsearch会根据索引的读写频率进行数据智能存储分层。

  3. 单击 保存并下一步,在索引模板配置向导中,配置索引模板信息。

    写入数据流的每个文档都必须包含@timestamp字段,映射类型为datedate_nanos,否则写入会报错。如果源数据中没有@timestamp字段,可通过ingest pipeline指定_ingest.timestamp获取元数据值自动引入。建议在索引模板的Mappings中为@timestamp字段指定映射,未指定时该字段会自动映射为datedate_nanos类型。

    说明

    内核增强版实例默认提供低优先级aliyun_default_index_template模板供索引模式[*]匹配,以降低日志场景应用成本。该模板会开启字段预排序(index.sort.field),提高时序数据搜索性能。nested类型字段不支持预排序,建议在模板中关闭。

    参数

    说明

    模版名称

    自定义输入索引模板名称。

    索引模式

    定义索引模式,支持通配符(*)表达式匹配数据流及索引名称。不允许使用空格和特殊字符:\/?"<>和`

    创建数据流

    开启数据流模式。未开启时,索引模式无法生成数据流。详细信息,请参见Data stream

    优先级

    定义模板优先级,数值越大,优先级越高。

    索引生命周期策略

    如果已在上一步创建了索引生命周期策略,系统直接引用该策略,且不能更改;如果未在上一步创建生命周期策略,可根据需求选择不填或填入集群中已有的生命周期策略名称(仅支持填入一个)。关于生命周期策略的详细信息,请参见ILM

    内容模板配置

    配置索引SettingsMappingsAliases。配置格式须严格遵循Elastic官方规范。 代码样例如下: * Settings plaintext { "index.number_of_replicas": "1", "index.number_of_shards": "5" } * Mappings plaintext { "properties": { "like": { "type": "keyword" }, "name": { "type": "text" }, "age": { "type": "integer" }, "email": { "type": "keyword" } } } * Aliases plaintext { "aliases": { "demo": { } } } * 组合内容模板: * component-openstore-index-template:OpenStore自定义冷热存储的组合模板。 * component-hybrid-openstore-index-template:OpenStore智能混合存储的组合模板。

  4. 单击确认

    创建完成后,页面会弹出 创建完成对话框。可直接单击立即前往创建数据流进入数据流创建页面,或关闭对话框返回索引模板列表。

    • 已创建的索引模板会显示在索引模板列表中。首次进入 索引模版管理页面,可以查看阿里云Elasticsearch默认创建的索引模板,建议不要修改默认模板的配置。

    • 索引模板的内容模板表示该模板引用的内容模板,引用内容模板可生成组合模板。单击对应的内容模板名称,可跳转至内容模板管理页面管理对应的内容模板。

    • 在索引模板列表中,单击目标索引模板操作列中的修改,可修改已创建的索引模板。也可以直接单击对应的 索引模版名称 索引生命周期策略查看和修改索引模板。

管理数据流

创建数据流前,必须先创建与之匹配的索引模板(且开启了数据流模式)。

创建数据流

  1. 单击 数据流管理页签。

  2. 单击 创建数据流

  3. 创建数据流面板,单击 预览已有索引模板,根据对应的索引模板,输入可匹配索引模板的数据流名称。

    重要
    • 创建数据流前必须存在可匹配的索引模板,该模板包含用于配置后备索引映射及设置的信息。数据流名称需符合索引模板的匹配模式(如索引模板的index_patternslogs-*-*,则数据流名称需以logs-开头,例如logs-myapp-prod)。

    • 数据流名称支持以短划线(-)结尾,不支持通配符星号(*)。

  4. 单击确定,系统自动生成数据流及后备索引。

    每个数据流创建成功后,都会自动生成一个统一格式的后备索引,格式如下。

    .ds-<data-stream>-<yyyy.MM.dd>-<generation>

    参数

    说明

    .ds

    隐藏索引名统一标识,数据流生成的后备索引名,默认均以.ds开头。

    <data-stream>

    数据流名称。

    <yyyy.MM.dd>

    后备索引创建日期。

    <generation>

    每个数据流都会生成一个六位数,默认从000001开始的累积整数值,generation值更大的后备索引包含更多新数据。

查看数据流信息

  1. 数据流管理页面,单击对应数据流名称,查看该数据流的后备索引名称、索引状态、存储大小、创建时间、当前生命周期阶段和写入托管状态。

    说明

    单击对应的后备索引名称,可进入Kibana控制台的索引监控页面,查看索引的监控详情。

  2. 单击对应数据流右侧的查看,在 查看数据流页面,查看 数据流名称 数据流状态 索引数量索引模板、 索引生命周期策略存储空间

    数据流状态包含GREEN、YELLOWRED,含义如下:

    • GREEN:数据流支持的索引所有分片均已分配。

    • YELLOW:数据流支持的索引主分片均已分配,但存在副本分片未分配。

    • RED:数据流支持的索引存在主分片未分配,会导致某些数据不可用。

查看索引托管信息

数据流管理页面,可查看索引托管的相关信息。

参数

说明

云端托管索引总大小

当前时刻,正处于云端写入托管中的索引总大小。

重要

云端托管索引总大小为实时变化数值,不是历史索引总大小。

索引个数

当前时刻,正处于云端写入托管中的索引总个数。 该数值为当前系统中的实时数值。

重要

索引个数为实时变化数值,不是历史索引总个数。

写入托管状态

  • 开启:该后备索引的云端写入托管处于开启状态。默认开启。

  • 关闭:取消该后备索引的云端写入托管。支持手动关闭,关闭后不支持开启。

说明
  • 手动关闭某一索引的云端写入托管,数据将直接写入用户集群中。请在关闭前确认该索引是否持续有数据写入,以及用户集群负载情况,否则可能出现用户集群负载较高风险。

  • 触发手动滚动更新或索引生命周期管理(ILM)配置Rollover自动更新后,旧的后备索引将自动关闭写入托管能力。

  • 当正在写数据的后备索引关闭写入托管能力,待触发下次Rollover,最新创建的后备索引将处于写入托管中,可以在控制台数据流下查看最新的后备索引。

  • 业务上建议配置索引生命周期管理(ILM)滚动策略,实现云端托管空间最优化。如果不配置,索引数据会全量存储在云托管服务Indexing Service中,将会增加云托管费用。

滚动更新数据流

  1. 数据流管理页面,单击对应数据流右侧的 手动滚动更新

  2. 在弹出的对话框中,单击确认

    滚动生成的新后备索引默认在云端Indexing Service进行写入托管,旧的后备索引将自动关闭写入托管。

删除数据流

重要

删除数据流会同时删除其所有后备索引,且不可恢复,请谨慎操作。

  1. 数据流管理页面,单击对应数据流右侧的删除

  2. 在弹出的对话框中,单击确认

管理索引

数据流创建后,后备索引会自动生成并托管在Indexing Service中。通过索引管理功能查看和管理这些云端托管索引,包括筛选索引、查看生命周期阶段和控制写入托管状态。

单击 索引管理页签,查看并管理集群中的索引。

系统默认展示全部索引,也可以根据需求筛选或查找对应索引:

  • 对于OpenStore自定义冷热存储版本,支持通过 仅查看托管中的索引查看OpenStore冷索引筛选相关索引。

  • 对于OpenStore智能混合存储版本,仅支持通过 仅查看托管中的索引筛选相关索引,且 索引管理页面最上方会展示OpenStore索引总大小 索引个数

关键参数

说明

仅查看托管中的索引

7.10内核增强版Indexing Service系列支持此参数。

选择该筛选条件时,页面展示以下信息:

  • 云端托管索引总大小:当前正处于云端写入托管中的索引总大小。

  • 索引个数:当前正处于云端写入托管中的索引总个数。

    云端托管索引总大小与索引个数均为实时数值。

查看OpenStore冷索引

7.10内核增强版实例开启OpenStore自定义冷热存储功能后,支持此参数。

选择该筛选条件时,页面展示以下信息:

  • OpenStore索引总大小:当前正处于OpenStore冷阶段存储的索引总大小。

  • 索引个数:当前正处于OpenStore冷节点存储的索引总个数。

    非数据流场景下,数据写入OpenStore存储后,索引名称将以openstore-*开头,不影响业务查询。

当前生命周期阶段

展示索引当前的生命周期状态,包括当前执行的阶段、阶段中执行的操作、索引进入该阶段的时间以及故障信息等。详情请参见Explain lifecycle API

开启OpenStore 智能混合存储功能的索引仅支持热阶段和删除阶段,不支持冷阶段。

写入托管状态

7.10内核增强版Indexing Service系列支持此参数。

支持以下两种状态:

  • 开启(默认):索引的云端写入托管处于开启状态。

  • 关闭:取消索引的云端写入托管。支持手动关闭,关闭后不支持重新开启。

    • 独立索引在云端写入托管期间,索引数据全量存储在Indexing Service中,会产生额外的托管费用。请根据业务场景(如索引是否仍有数据写入)评估是否需要手动关闭写入托管。

    • 手动关闭某个索引的云端写入托管后,数据将直接写入集群。关闭前请确认该索引是否持续有数据写入以及集群的负载情况,避免集群负载过高。

    • 建议使用数据流(Data Stream)和索引生命周期管理(ILM)滚动策略,优化云端托管空间。

相关API

  • 取消索引托管。

    POST /<yourIndexName>/_cube/unfollow

    强制取消索引托管:取消托管过程中索引需完成段合并后才会结束托管,段合并耗时与segment数量、数据写入情况及数据量等因素相关。如果耗时较长,内核版本1.6及以上的内核增强版实例可通过以下命令强制取消索引托管。

    POST /<yourIndexName>/_cube/unfollow?force=true

    <yourIndexName>:替换为实际的索引名称。

    重要

    取消/强制取消索引托管API不支持批量操作,频繁取消索引托管会影响托管服务稳定性。

    仅内核版本1.6及以上的内核增强版实例支持强制取消索引托管。内核版本低于1.6的实例需先升级内核版本,具体操作请参见版本升级

  • 获取托管状态信息。

    GET /<yourIndexName>/_cube/stats

    <yourIndexName>:替换为实际的索引名称。

  • 获取集群托管到Indexing Service的整体状态。

    GET /_cube/stats
  • 将快照恢复到Indexing Service实例。

    例如将my_backup仓库中snapshot_1快照的index_1索引数据恢复到Indexing Service实例中,示例如下。实际使用时需将对应信息替换为实际值。

    POST /_snapshot/my_backup/snapshot_1/_restore
    {
      "indices": "index_1",
      "ignore_index_settings": [
        "index.apack.cube.following_index"
      ]
    }
  • 手动触发数据流Rollover。

    POST <yourDatastreamName>/_rollover

    <yourDatastreamName>:替换为实际的数据流名称。