Переиндексируйте и удаляйте последовательно в Elasticsearch

#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);
}