elasticsearch - 使用 elasticsearch 进行远程索引时出错
问题描述
我正在尝试从一个 ES 集群移动到另一个集群,以便计划更新。
两者都是相同的版本(6.4)。为了实现这一点,我正在使用这个命令:
curl -XPOST -H "Content-Type: application/json" http://new_cluster/_reindex -d@reindex.json
reindex.json 看起来像这样:
{
"source": {
"remote": {
"host": "http://old_cluster:9199"
},
"index": "megabase.33.2",
"query": {
"match_all": {}
}
},
"dest": {
"index": "megabase.33.2"
}
}
我将一个新集群和旧集群列入了白名单,它的工作原理,但我无法完成数据迁移,因为我有这个错误,我不明白这意味着什么:
{
"took":1762,
"timed_out":false,
"total":8263428,
"updated":5998,
"created":5001,
"deleted":0,
"batches":11,
"version_conflicts":0,
"noops":0,
"retries":{
"bulk":0,
"search":0
},
"throttled_millis":0,
"requests_per_second":-1.0,
"throttled_until_millis":0,
"failures":[
{
"index":"megabase.33.2",
"type":"persona",
"id":"noYOA3IBTWbNbLJUqk6T",
"cause":{
"type":"mapper_parsing_exception",
"reason":"failed to parse [adr_inse]",
"caused_by":{
"type":"illegal_argument_exception",
"reason":"For input string: \"2A004\""
}
},
"status":400
}
]
}
原始集群中的记录如下所示:
{
"took": 993,
"timed_out": false,
"_shards": {
"total": 4,
"successful": 4,
"skipped": 0,
"failed": 0
},
"hits": {
"total": 1,
"max_score": 0,
"hits": [
{
"_index": "megabase.33.2",
"_type": "persona",
"_id": "noYOA3IBTWbNbLJUqk6T",
"_score": 0,
"_source": {
"address": "Obfucated",
"adr_inse": "2A004",
"age": 10,
"base": "Obfucated",
"city": "Obfucated",
"cp": 20167,
"email_md5": "Obfucated",
"fraicheur": "2020-01-12T19:39:04+01:00",
"group": 1,
"latlon": "Obfucated",
"partner": "Obfucated",
"partnerbase": 2,
"sex": 2,
"sms_md5": "Obfucated"
}
}
]
}
}
关于我做错了什么的任何线索?
非常感谢
解决方案
发现,仅使用 reindex 方法时无法很好地创建映射。
所以我放弃了新的索引,使用 elasticdump 重新创建映射:
elasticdump --input=http://oldcluster/megabase.33.2 --output=http://newcluster/megabase.33.2 --type=mapping
然后运行之前的脚本,一切都完美无缺(而且相当快)
推荐阅读
- excel - 使用公式计算单元格时出现运行时错误 1004
- groovy - Groovy 匹配文件夹中的文档文件
- git - Netbeans:存储库的凭据不正确
- python - 如何在 ElasticSearch 中自定义分数计算?
- python - 将二维高斯轮廓拟合到焦点上
- powershell - PowerShell从具有最新日期的列表中下载文件
- javascript - 当我发出错误的 POST 请求时,我没有得到 err 属性。我的应用程序将崩溃,而不是提供 err 属性
- oracle - 有什么方法可以在 oracle 中自动停止后台处理程序我不小心关闭了 sqlplus
- python - python中的字典理解(生成一个字母字典,其中值是键前一个字母)
- python - 本地/全局范围