我有一个每周一次的导入工作,它将所有记录从mongodb插入elasticsearch。
我现在做的是:
“主”索引中已存在记录
我将所有新记录插入“main temp”索引
我删除了“main”索引
我将“主温度”重新索引为“主温度”
我删除了“main temp”索引
我正在同一数据集上本地运行该操作。
我注意到新“main”索引中的记录数与导入到“main temp”索引的记录数不匹配。
这是我正在使用的代码
try {
await client.indices.delete({index: "main"})
Logger.info('Old Index Deleted')
await client.indices.create({ index: 'main' })
Logger.info('New Index Created')
await client.reindex({
waitForCompletion: true,
refresh: true,
body: {
source: {
index: 'main-temp'
},
dest: {
index: 'main'
}
}
})
Logger.info('Temp Index Reindexed/Cloned')
await client.indices.delete({index: "main-temp"})
Logger.info('Temp Index Deleted')
} catch(e) {
Logger.error(e)
}
我使用的是elastic search 6.8.9,所以不能使用clone api,因为它是7.x的一部分
检查下面的结果截图,事情是每当它重新索引的记录数是不同的(通常小几千)
https://i.stack.imgur.com/g1u0j.png
更新:这里是我从reindex得到的响应(如果我让result=await)
有时它得到正确的数字,有时不是。
took: 22357,
timed_out: false,
total: 673637,
updated: 0,
created: 673637,
deleted: 0,
batches: 674,
version_conflicts: 0,
noops: 0,
retries: { bulk: 0, search: 0 },
throttled_millis: 0,
requests_per_second: -1,
throttled_until_millis: 0,
failures: []
1条答案
按热度按时间bzzcjhmw1#
我通过在创建/删除旧索引和重新编制索引之后引入超时来解决这个问题。
这是密码
elasticsearch似乎需要一些时间才能让一切正常运行。