我们在不同的环境中使用elasticsearch版本1.x和2.x.在所有文档中,我们使用自定义路由仅在其中一个环境中将路由设置为必需,因此我无法在没有路由参数的情况下发送_search请求。我们总共有64个分片。
现在我必须删除该环境中包含特定字段(索引/ 类型 / id)的给定类型的所有文档。我计划这样做的方法是发送查询以获取给定类型的所有文档,然后发送批量请求以删除它们。不幸的是,由于强制路由,我无法使用单个_search检索文档,因为它必须始终包含路由。
有没有办法迭代所有可能的分片并获取所有文件(有一些过滤),所以我可以批量删除它们之后?我能够用_cat /分片列出所有分片,但我没有在ES文档中找到任何指定如何在不事先知道路由的情况下迭代每个分片的内容。
如果你问为什么我只是不使用我拥有的所有路由值 - 那么它们是数十亿 - 它们已经解决了64个分片,所以我认为这不合理。
我没有使用查询删除,因为在2.x版本的ES中,它已移至插件,而ops团队目前尚未安装任何插件。