node.js - 在Elasticsearch上按顺序重新索引和删除

标签 node.js elasticsearch

我将需要重新索引,删除旧索引并从旧删除的索引中重命名为名称,它将在NodeJS中以随机顺序执行,尝试删除和重命名值不存在。
我确实尝试过以没有成功的 promise 运行,并使用.then(function(resp),并且发生了同样的问题。

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

最佳答案

这是正确的做法:

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

关于node.js - 在Elasticsearch上按顺序重新索引和删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63402946/

相关文章:

node.js - 架构无效,应为 `mongodb` 或 `mongodb+srv`

node.js - 如何动态调整图像大小(Express 和 S3)

Elasticsearch 监控指标

c# - 具有两个短语的多阶段方法 - Elasticsearch

php - elasticsearch-php更新返回错误请求,其中curl不

javascript - 在成功安装 sqlite3 后尝试运行代码时如何修复此 "module not found error"?

node.js - OAuth2 回调 - 识别用户?

javascript - 使用 Node js每秒加载一次查询

elasticsearch - 可视化之前编辑数据

php - fatal error : Uncaught Elasticsearch\Common\Exceptions\BadRequest400Exception