You need to enable JavaScript to run this app.
文档中心
云搜索服务

云搜索服务

复制全文
下载 pdf
可搜索快照
通过 ISM 生成可搜索快照
复制全文
下载 pdf
通过 ISM 生成可搜索快照
云搜索服务支持可搜索快照功能,该功能基于快照构建可搜索快照只读索引。本文介绍通过 ISM 生成可搜索快照的操作步骤。​
背景信息​
ISM(Index State Management )是用于索引生命周期的自动化管理插件,ISM 插件允许根据预定义的策略自动执行各种操作,以优化索引的性能、存储效率和数据管理。​
在可搜索快照的场景中,可以帮助我们将不常用的索引自动转化成可搜索快照,优化集群的存储效率,避免频繁的手动创建快照操作。​
前提条件​
  • 在体验可搜索快照前,需要先确保实例中已经启用冷数据节点。Elasticsearch 6.7.1 和 6.8.23 版本实例不支持冷数据节点,因此也不支持可搜索快照功能。Elasticsearch 7.10.2 版本和 OpenSearch 2.9.0 版本实例都支持可搜索快照。​
  • 您可以选择新建实例,在创建实例时启用冷数据节点,具体操作,请参见创建实例。​
  • 如果您已有实例,但未启用冷数据节点,可以通过升配的方式启用冷数据节点。具体操作,请参见升配实例。​
  • ISM 策略只能针对未创建的索引自动关联生效。当新建的索引匹配到 ISM 策略中的索引名称表达式,索引和 ISM 策略将自动关联。​
创建可搜索快照​
  1. 登录可视化工具,进入命令行。​
  1. 登录可视化工具。使用公网访问地址登录可视化工具,请参见公网访问 Kibana/Dashboards。​
  1. 在左侧导航栏选择 Management > Dev Tools。​
  1. 创建快照存储库。​
  • 创建一个名为 doc-repo 的快照存储库。在实际使用中,您可以自定义设置存储库名称。​
  • ​
    PUT _snapshot/doc-repo​
    {​
    "type" : "s3",​
    "settings" : {​
    "bucket" : "es-shadow-prod-cn-beijing-210094***",​
    "path_style_access" : "false",​
    "endpoint" : "tos-s3-cn-beijing.ivolces.com/",​
    "protocol" : "https",​
    "client" : "default",​
    "base_path" : "_remote_index",​
    "region" : "cn-beijing",​
    "searchable" : true​
    }​
    }​
    ​
  • bucket:直接使用系统默认存储桶。系统默认桶在您的 TOS 产品页面中不可见,您可以在云搜索服务的快照管理页面,将鼠标移动到桶名称上即可查看默认存储桶的名称。​
  • endpoint:TOS 存储桶的 S3 Endpoint 地址。直接使用私网地址,地域与云搜索服务实例相同。​
  • base_path:自定义快照存储路径。​
  • region:TOS 存储桶所属地域,与云搜索服务实例在相同地域。​
  • searchable:使用系统自建的 TOS 存储桶来创建快照存储库时,必须将该参数设置为 true。使用其他 TOS 存储桶时,则无需配置该参数。​
  • ​Image​​
  1. 创建 ISM 策略。​
  • 此处创建一个 id 为 searchable_snapshot_policy 的 ISM 策略,该策略将匹配 nginxlogs-* 格式的索引分为 Hot、Cold、Delete 三个阶段:​
  • 索引的初始状态为 Hot,当索引中的文档数量超过 20 时,会自动进行 rollover 动作,将生成一个新索引并进入 Cold 阶段。​
  • 在 Cold 阶段的索引会自动创建可搜索快照。索引在创建 5 天后会自动进入 Delete 阶段。在 Cold 阶段,会删除原索引并创建一个可搜索快照只读索引。​
  • 假设原索引为 nginxlogs-000001,那么新生成的索引为 nginxlogs-000002,生成的可搜索快照只读索引为 remote-nginxlogs-000001。​
  • 进入 Delete 阶段后,会删除可搜索快照只读索引,以及创建的快照数据。​
说明​
OpenSearch 2.9.0 版本实例和 Elasticsearch 7.10.2 版本实例在创建 ISM 策略时的命令不同,请注意区分。​
  • ​
    OpenSearch 2.9.0 版本实例
    Elasticsearch 7.10.2 版本实例
    ​
    ​
    ​
    PUT _plugins/_ism/policies/searchable_snapshot_policy​
    {​
    "policy": {​
    "description": "policy-test",​
    "default_state": "hot",​
    "states": [​
    {​
    "name": "hot",​
    "actions": [​
    {​
    "rollover": {​
    "min_doc_count": 20​
    }​
    }​
    ],​
    "transitions": [​
    {​
    "state_name": "cold"​
    }​
    ]​
    },​
    {​
    "name": "cold",​
    "actions": [​
    {​
    "searchable_snapshot": {​
    "snapshot_repository": "doc-repo"​
    }​
    }​
    ],​
    "transitions": [​
    {​
    "state_name": "delete",​
    "conditions": {​
    "min_index_age": "5d"​
    }​
    }​
    ]​
    },​
    {​
    "name": "delete",​
    "actions": [​
    {​
    "delete": {​
    "delete_searchable_snapshot" : true​
    }​
    }​
    ]​
    }​
    ],​
    "ism_template": {​
    "index_patterns": [​
    "nginxlogs-*"​
    ],​
    "priority": 10​
    }​
    }​
    }​
    ​
    ​
  1. 创建索引,并写入多条数据。​
  1. 创建索引模板。​
  • 创建一个名为 nginxlogs_template 的索引模板。在实际使用中,您可以自定义设置索引模板名称。​
说明​
以下命令在创建索引模板的同时,为所有匹配到表达式的索引,都添加一个共同的索引别名。OpenSearch 2.9.0 版本实例和 Elasticsearch 7.10.2 版本实例在绑定别名时的命令不同,请注意区分。​
  • ​
    OpenSearch 2.9.0 版本实例
    Elasticsearch 7.10.2 版本实例
    ​
    ​
    PUT _template/nginxlogs_template​
    {​
    "index_patterns": ["nginxlogs-*"],​
    "settings": {​
    "index": {​
    "number_of_shards": 1,​
    "number_of_replicas": 1,​
    "plugins.index_state_management.rollover_alias": "nginxlogs"​
    }​
    }​
    }​
    ​
    ​
  1. 创建索引。​
  • ​
    PUT /nginxlogs-000001​
    {​
    "aliases": {​
    "nginxlogs": {​
    "is_write_index": true​
    }​
    }​
    }​
    ​
  1. 反复写入多篇文档数据。​
  • 反复执行以下命令,可以向索引中写入多篇文档数据。为了触发本文中设置的 ISM 策略 rollover 动作,至少需要写入超过 20 篇文档。​
  • ​
    POST /nginxlogs/_doc​
    {​
    "@timestamp": "2024-07-01T13:12:00",​
    "message": "GET /search HTTP/1.1 200 1070000",​
    "user": {​
    "id": "kim"​
    }​
    }​
    ​
  1. 查看索引数据分布情况,判断是否生成可搜索快照索引。​
  • ​
    GET _cat/shards?v&s=index,shard​
    ​
  • ​Image​​
  • 新建的索引名称和 ISM 策略中的索引表达式匹配后,将自动关联。经过较长一段时间后,您可执行上述命令查看是否生成了可搜索快照索引,默认以 remote- 开头。​
说明​
从查询结果中,您可了解到以下重要信息:​
  • 可搜索快照索引以 remote- 开头,存储在冷数据节点。​
  • 系统自动生成一个新索引 nginxlogs-000002,再过一段时间将会删除原索引 nginxlogs-000001。​
  • 如果索引列表中没有 remote- 开头的可搜索快照索引,一般是由于正处于 ISM 策略执行过程,还未生成可搜索快照索引。ISM 策略执行一般耗时比较久,您可以通过命令查看策略执行进度,具体请参见 1.如何查看 ISM 策略执行进度?​
  1. 检索可搜索快照索引。​
  • ​
    GET /<index-name>/_search​
    ​
  • 检索可搜索快照索引时,请替换为正确的索引名称。在本文中,可以查询 remote-nginxlogs-000001,也可以查询 remote-nginxlogs*。​
常见问题​
  • 如何查看索引的 ISM 策略的执行进度?​
  • 在 Dev Tools 页面,执行 GET _opendistro/_ism/explain/<index-name> 命令,即可查看 ISM 策略执行进度。​
  • ​Image​​
  • 如何判断索引是否是可搜索快照索引?​
  • 在 Dev Tools 页面,执行 GET /<index-name>/_settings?pretty 命令,查看索引配置。如果索引的存储类型显示为 remote_snapshot,则表示该索引是可搜索快照索引。​
  • ​Image​​
  • 如何关联存量索引和 ISM 策略?​
  • 在 Dev Tools 页面,执行以下命令,关联历史索引和目标 ISM 策略。​
  • OpenSearch 版本实例:​
  • ​
    POST /_plugins/_ism/add/<index-name>​
    {​
    "policy_id": "searchable_snapshot_policy"​
    }​
    ​
  • ​Image​​
  • Elasticsearch 7.10.2 版本实例:​
  • ​
    POST /_opendistro/_ism/add/<index-name>​
    {​
    "policy_id": "searchable_snapshot_policy"​
    }​
    POST /_opendistro/_ism/add/<index-name>​
    {​
    "policy_id": "searchable_snapshot_policy"​
    }​
    ​
  • ​
最近更新时间:2026.10.23 11:42:32
这个页面对您有帮助吗?
有用
有用
无用
无用