#node.js #elasticsearch
#node.js #elasticsearch
Вопрос:
Мне нужно будет переиндексировать, удалить старый индекс и переименовать в имя из старого удаленного индекса, оно будет выполняться в случайном порядке в NodeJS, попытка удалить и переименовать значения не существует.
Я безуспешно пытался запустить promises и использовать .then(функция (соответственно), и возникает та же проблема.
es.reindex({
refresh: true,
body: {
"source": {
"index": current_index
},
"dest": {
"index": current_index ".tmp"
}
}
});
es.indices.delete({
index: current_index,
ignore: [404]
}, function(err, resp, respcode) {
if (err) {
console.log("Error deleting index " current_index);
console.log(" Error: " err);
console.log(" Resp code: " respcode);
}
});
es.reindex({
refresh: true,
body: {
"source": {
"index": current_index ".tmp"
},
"dest": {
"index": current_index
}
}
});
es.indices.delete({
index: current_index ".tmp",
ignore: [404]
}, function(err, resp, respcode) {
if (err) {
console.log("Error deleting index " current_index);
console.log(" Error: " err);
console.log(" Resp code: " respcode);
}
});
Ответ №1:
Вот правильный способ сделать это:
const {reindex1Body} = await es.reindex({
refresh: true,
body: {
"source": {
"index": current_index
},
"dest": {
"index": current_index ".tmp"
}
}
});
try {
await es.indices.delete({
index: current_index
}, {
ignore: [404]
});
} catch (err) {
console.log("Error deleting index " current_index);
console.log(" Error: " err);
console.log(" Resp code: " err.statusCode);
}
const {reindex2Body} = await es.reindex({
refresh: true,
body: {
"source": {
"index": current_index ".tmp"
},
"dest": {
"index": current_index
}
}
});
try {
await es.indices.delete({
index: current_index ".tmp"
}, {
ignore: [404]
});
} catch (err) {
console.log("Error deleting index " current_index);
console.log(" Error: " err);
console.log(" Resp code: " err.statusCode);
}