更换主键_id的方法主要有两种:一、使用update API更换主键_id;二、使用reindex API更换主键_id。update API可以用来更新文档中的字段。可以通过update API来更换主键_id,首先,需要获取原始文档的信息,包括主键_id和其他字段的值。
一、使用update API更换主键_id
update API可以用来更新文档中的字段。可以通过update API来更换主键_id,首先,需要获取原始文档的信息,包括主键_id和其他字段的值。可以使用get API来获取原始文档的信息,例如:
GET /{index}/{type}/{id}
然后,我们需要使用update API来更新文档的主键_id。可以使用如下命令:
POST /{index}/{type}/{new_id}/_update
{
"doc": {
"{field1}": "{value1}",
"{field2}": "{value2}",
...
}
}
其中,{new_id}是新的主键_id,{field1}、{field2}等是文档中其他字段的名称,{value1}、{value2}等是这些字段的新值。
最后,我们需要删除原始文档。可以使用delete API来删除原始文档,例如:
DELETE /{index}/{type}/{old_id}
其中,{old_id}是原始文档的主键_id。
二、使用reindex API更换主键_id
reindex API可以用来将一个或多个索引中的数据重新索引到一个新的索引中。我们可以使用reindex API来更换主键_id,具体步骤如下:
首先,我们需要创建一个新的索引,用于存放重新索引后的数据。可以使用create index API来创建一个新的索引,例如:
PUT /{new_index}
其中,{new_index}是新的索引名称。
然后,我们需要使用reindex API将原始索引中的数据重新索引到新的索引中,并更换主键_id。可以使用如下命令:
POST /_reindex
{
"source": {
"index": "{old_index}"
},
"dest": {
"index": "{new_index}"
},
"script": {
"lang": "painless",
"inline": "ctx._id = '{new_id}';"
}
}
其中,{old_index}是原始索引的名称,{new_index}是新的索引的名称,{new_id}是新的主键_id。
最后,我们需要删除原始索引。可以使用delete index API来删除原始索引,例如:
DELETE /{old_index}
其中,{old_index}是原始索引的名称。
延伸阅读:
什么是主键?
主关键字(primary key)是表中的一个或多个字段,它的值用于唯一的标识表中的某一条记录。在两个表的关系中,主关键字用来在一个表中引用来自于另一个表中的特定记录。主关键字是一种唯一关键字,表定义的一部分。一个表的主键可以由多个关键字共同组成,并且主关键字的列不能包含空值。主关键字是可选的,并且可在 CREATE TABLE 或 ALTER TABLE 语句中定义。
文章标题:elasticsearch主键_id怎么更换,发布者:Flawy,转载请注明出处:https://worktile.com/kb/p/53624