root 身份进入容器
直接使用
root 用户执行命令,无需 sudo:# 退出当前容器
exit
# 以 root 身份重新进入容器
docker exec -u root -it aee5b2d69a45 /bin/bash
# 在容器内执行安装命令
apt-get update && apt-get install -y iputils-ping net-tools
# 查看是否有网络
ping 114.114.114.114
步骤 1:安装必要插件
确保新集群已安装:
- IK 分词器:用于中文分词
- STConvert 插件:用于简繁转换
安装命令示例(以 ES 8.3.2 为例):
# 安装 IK 分词器
bin/elasticsearch-plugin install https://get.infini.cloud/elasticsearch/analysis-ik/8.18.2
# 安装 STConvert 插件
bin/elasticsearch-plugin install https://get.infini.cloud/elasticsearch/analysis-stconvert/8.18.2
# 重启 Elasticsearch
systemctl restart elasticsearch
步骤 2:创建索引的 API 请求
使用以下请求创建新索引(例如命名为
new_cllj):PUT 命令
https://192.168.1.1:9200/创建的索引地址/
"properties": {
"这个是关联字段记得修改": {
"type": "text",
这个注意
json
{
"settings": {
"index": {
"routing": {
"allocation": {
"include": {
"_tier_preference": "data_content"
}
}
},
"number_of_shards": 1,
"max_result_window": 2000000,
"analysis": {
"analyzer": {
"my_analyzer": {
"filter": ["lowercase"],
"char_filter": ["tsconvert", "symbol_filter"],
"type": "custom",
"tokenizer": "ik_max_word"
},
"my_letter_digit_analyzer": {
"filter": ["lowercase"],
"char_filter": ["tsconvert", "symbol_filter"],
"type": "custom",
"tokenizer": "letter_digit_tokenizer"
},
"my_standard_analyzer": {
"filter": ["lowercase"],
"type": "standard",
"char_filter": ["tsconvert", "symbol_filter"]
}
},
"char_filter": {
"tsconvert": {
"convert_type": "t2s",
"type": "stconvert"
},
"symbol_filter": {
"pattern": "[!\"#$%&'()*+,-./:;<=>?@\\[\\\\\\]^_`{|}~]+",
"type": "pattern_replace",
"replacement": " "
}
},
"tokenizer": {
"letter_digit_tokenizer": {
"pattern": "(?<=\\D)(?=\\d)|(?<=\\d)(?=\\D)",
"type": "pattern"
}
}
},
"number_of_replicas": 1
}
},
"mappings": {
"properties": {
"这个是关联字段记得修改": {
"type": "text",
"analyzer": "my_analyzer", // 主字段使用中文分析器(繁转简+ik分词)
"fields": {
"raw": {
"type": "keyword", // 保留原始值(用于精确匹配,如排序、聚合)
"ignore_above": 256
},
"letter_digit": {
"type": "text",
"analyzer": "my_letter_digit_analyzer" // 子字段处理字母数字混合文本
},
"standard": {
"type": "text",
"analyzer": "my_standard_analyzer" // 子字段使用标准分析器
}
}
}
}
}
}
关键修改说明
-
移除只读参数:
- 删除了
creation_date、uuid、version和provided_name字段,这些由 ES 自动生成。
- 删除了
-
调整分片和副本数:
- 根据新集群规模调整
number_of_shards和number_of_replicas。
- 根据新集群规模调整
-
保留核心分析器配置:
- 完整保留了
my_analyzer、my_letter_digit_analyzer和my_standard_analyzer的配置。
- 完整保留了
验证新索引配置
GET /new_cllj/_settings
返回结果应与原索引的配置一致(除了系统自动生成的参数)。
后续步骤
如果需要迁移数据,可以使用 Reindex API:
POST _reindex
{
"source": {
"index": "cllj",
"remote": {
"host": "http://原集群地址:9200",
"username": "your_username",
"password": "your_password"
}
},
"dest": {
"index": "new_cllj"
}
}
注意:远程 reindex 需要在原集群的
elasticsearch.yml 中配置 reindex.remote.whitelist。
在 Elasticsearch 中配置
reindex.remote.whitelist 允许从远程集群执行数据重建索引 (reindex) 操作。以下是详细配置步骤:一、配置步骤
-
找到 elasticsearch.yml 配置文件
通常位于 Elasticsearch 安装目录的config/文件夹下。 -
添加远程集群白名单
在elasticsearch.yml中添加以下配置,指定允许访问的远程集群地址:# 允许访问的远程集群地址,格式为 "主机:端口" reindex.remote.whitelist: "remote-cluster-host:9200"- 多个地址用逗号分隔:
"host1:9200,host2:9200" - 支持通配符:
"*.example.com:9200"允许该域名下所有主
- 多个地址用逗号分隔:
-
保存文件并重启 Elasticsearch
配置修改后,重启 Elasticsearch 服务使配置生效。
二、配置示例
示例 1:允许单个远程集群
reindex.remote.whitelist: "remote-es-cluster:9200"
示例 2:允许多个远程集群
reindex.remote.whitelist: "prod-es:9200,staging-es:9200,192.168.1.100:9200"
示例 3:使用通配符
reindex.remote.whitelist: "*.example.com:9200" # 允许 example.com 域名下所有主机
三、注意事项
-
安全风险
该配置会暴露集群给指定的远程地址,建议仅允许受信任的 IP 或域名。 -
端口检查
确保远程集群的 HTTP 端口(默认为 9200)可访问,且防火墙未阻止连接。 -
身份验证(可选)
若远程集群需要身份验证,需额外配置:reindex.remote.whitelist: "remote-cluster:9200" # 远程集群的基本认证信息 reindex.remote.username: "your_username" reindex.remote.password: "your_password" -
版本兼容性
远程集群与本地集群的 Elasticsearch 版本建议保持一致,避免兼容性问题。
四、验证配置
配置重启后,可通过以下命令验证远程 reindex 是否正常工作:
curl -X POST "localhost:9200/_reindex" -H 'Content-Type: application/json' -d'
{
"source": {
"remote": {
"host": "http://remote-cluster:9200",
"username": "your_username", # 如果配置了认证
"password": "your_password"
},
"index": "source-index"
},
"dest": {
"index": "target-index"
}
}
'
若返回
{"took":...,"timed_out":false,...} 则表示配置成功。© 版权声明
文章版权归作者所有,未经允许请勿转载。
下一篇
没有更多了...
相关文章
暂无评论...
添加小工具