更换主键_id的两种方法_下面我会用简单的话来解释这两种方法_在数据库里主键是用来唯一标识表中的每一行数据的
更换主键_id的两种方法
更换主键_id主要有两种方法,听起来可能有点复杂,但其实很简单。下面我会用简单的话来解释这两种方法。方法一:使用update API更换主键_id
这个方法就像给你的文档换一个新名字一样简单。首先,你需要找到原来的文档,看看它的名字(也就是主键_id)和所有其他的信息。
比如,你可以用get API来找到文档的信息:
``` GET /document_id ```然后,你用update API来给文档换一个新的名字(也就是主键_id),同时也可以更新其他信息:
``` POST /_update { "script": { "source": "ctx._id = new_id", "lang": "painless" } } ``` 这里,`new_id`是新名字,`field1`、`field2`等是你想更新的其他信息。最后,别忘了把原来的文档删掉,这样就不会有两个同名的东西了:
``` DELETE /document_id ```方法二:使用reindex API更换主键_id
这个方法就像把文档从一本书的某一页移到另一页。首先,你需要创建一个新的页面(也就是新的索引),然后把你想要的信息重新放上去。
你可以用create index API来创建一个新的页面:
``` POST /_create_index { "settings": { "index": { "number_of_shards": 1, "number_of_replicas": 0 } } } ```然后,使用reindex API把原来的信息重新放上新页面,同时换上新名字:
``` POST /_reindex { "source": { "index": "old_index" }, "dest": { "index": "new_index" }, "script": { "source": "ctx._id = new_id", "lang": "painless" } } ``` 这里,`old_index`是原来的索引名,`new_index`是新索引名,`new_id`是新名字。最后,把原来的页面(索引)删掉,这样就只有新页面了:
``` DELETE /old_index ```