使用CSS Logstash迁移Elasticsearch/OpenSearch的配置文件样例
本文以源端和目的端都是CSS服务的Elasticsearch/OpenSearch集群为例,介绍使用CSS服务的Logstash进行集群迁移的配置文件样例。
查看集群类型
- 登录云搜索服务管理控制台。
- 在左侧导航栏,选择“集群管理 > Elasticsearch”。
- 在集群列表,选择源端或目的端Elasticsearch集群,单击集群名称,进入详情页面。
- 选择“概览”页签,在“网络信息”查看集群是否开启安全模式、是否开启HTTPS访问。如图1所示,表示该Elasticsearch集群是使用HTTPS访问的安全集群。
表1 不同集群类型之间进行数据迁移的Logstash配置文件样例 迁移场景
Logstash配置文件样例
非安全集群之间进行数据迁移
使用HTTP访问的安全集群之间进行数据迁移
使用HTTPS访问的安全集群之间进行数据迁移
当源端和目的端集群的安全模式不同时,可以参考本文样例中的input和output模块自由组合出合适的配置文件。
非安全集群的Logstash配置文件样例
当源端和目的端的Elasticsearch/OpenSearch集群都是非安全模式时,Logstash配置文件示例:
input {
elasticsearch {
# 源端集群的节点访问地址,无需添加协议
hosts => ["xxx.xxx.xxx.xxx:9200", "xxx.xxx.xxx.xxx:9200"]
# 待迁移的源索引名称
index => "xxx,xxx"
docinfo => true
}
}
filter {
# 移除一些Logstash事件添加的元数据字段
mutate {
remove_field => ["@timestamp", "@version"]
}
}
output {
elasticsearch {
# 目的端集群的节点访问地址,无需添加协议
hosts => ["xxx.xxx.xxx.xxx:9200", "xxx.xxx.xxx.xxx:9200"]
# 事件写入的索引配置,以下配置表示保留源数据的索引名称、文档类型和文档id
index => "%{[@metadata][_index]}"
document_type => "%{[@metadata][_type]}"
document_id => "%{[@metadata][_id]}"
}
} 安全集群(使用HTTP访问)的Logstash配置文件样例
当源端和目的端的Elasticsearch/OpenSearch集群都是安全模式且未启用HTTPS访问时,Logstash配置文件示例:
input {
elasticsearch {
# 源端集群的节点访问地址,无需添加协议
hosts => ["xxx.xxx.xxx.xxx:9200", "xxx.xxx.xxx.xxx:9200"]
# 待迁移的源索引名称
index => "xxx,xxx"
docinfo => true
user => "xxx" # 访问集群的用户名
password => "xxx" # 用户名对应的密码
}
}
filter {
# 移除一些Logstash事件添加的元数据字段
mutate {
remove_field => ["@timestamp", "@version"]
}
}
output {
elasticsearch {
# 目的端集群的节点访问地址,无需添加协议
hosts => ["xxx.xxx.xxx.xxx:9200", "xxx.xxx.xxx.xxx:9200"]
# 事件写入的索引配置,以下配置表示保留源数据的索引名称、文档类型和文档id
index => "%{[@metadata][_index]}"
document_type => "%{[@metadata][_type]}"
document_id => "%{[@metadata][_id]}"
user => "xxx" # 访问集群的用户名
password => "xxx" # 用户名对应的密码
}
} 安全集群(使用HTTPS访问)的Logstash配置文件样例
当源端和目的端的Elasticsearch/OpenSearch集群都是安全模式且开启了HTTPS访问时,Logstash配置文件示例:
input {
elasticsearch {
# 源端集群的节点访问地址,无需添加协议
hosts => ["xxx.xxx.xxx.xxx:9200", "xxx.xxx.xxx.xxx:9200"]
# 待迁移的源索引名称
index => "xxx,xxx"
docinfo => true
user => "xxx" # 访问集群的用户名
password => "xxx" # 用户名对应的密码
ssl => true # 启用SSL连接
ca_file => "/opt/logstash/extend/certs" # 用于认证源端集群的CA证书文件路径
}
}
filter {
# 移除一些Logstash事件添加的元数据字段
mutate {
remove_field => ["@timestamp", "@version"]
}
}
output {
elasticsearch {
# 目的端集群的节点访问地址,无需添加协议
hosts => ["xxx.xxx.xxx.xxx:9200", "xxx.xxx.xxx.xxx:9200"]
# 事件写入的索引配置,以下配置表示保留源数据的索引名称、文档类型和文档id
index => "%{[@metadata][_index]}"
document_type => "%{[@metadata][_type]}"
document_id => "%{[@metadata][_id]}"
user => "xxx" # 访问集群的用户名
password => "xxx" # 用户名对应的密码
ssl => true # 启用SSL连接
cacert => "/opt/logstash/extend/certs" # 用于认证目的端集群的CA证书文件路径
ssl_certificate_verification => false # 目的端集群是否启用安全证书认证
}
}
