上下文:
问题:
有什么方法可以更新ES中现有文档的routingId?
我确实知道我们可以保留旧的routingId以获取数据。但是还有其他方法吗?
最佳答案
如果您在通过查询进行更新的过程中尝试修改_routing
值,则会出现以下错误:
{
"error" : {
"root_cause" : [
{
"type" : "illegal_argument_exception",
"reason" : "Modifying [_routing] not allowed"
}
],
"type" : "illegal_argument_exception",
"reason" : "Modifying [_routing] not allowed"
},
"status" : 400
}
修改给定文档的路由具有将文档潜在地移动到新分片的效果,这是不允许的。同样,您将得到两个文档,它们在相同的索引中具有相同的ID,仅位于两个不同的分片上。在保持索引一致的同时,实现所需内容的唯一方法是: