📅  最后修改于: 2023-12-03 15:24:02.034000             🧑  作者: Mango
在 Elasticsearch 中,每个文档都有一个唯一的 _id
标识符。默认情况下,_id
是自动分配的,并且是每个文档的版本控制和唯一性检查的基础。但是,在某些情况下,需要自己定义 _id
值。下面介绍如何使用自定义值制作 _id
。
可以使用 PUT 请求和自定义 ID 来创建文档。下面的代码片段演示了如何使用 PUT 请求创建具有自定义 _id
的文档。
PUT /my_index/my_type/my_custom_id
{
"foo": "bar"
}
在这种情况下,索引为 my_index
,类型为 my_type
的文档将具有 _id
为 my_custom_id
。根据需要更改索引、类型和 _id
值即可。
您还可以使用自定义 _id
移除或更新文档。下面的代码片段演示了如何使用自定义 _id
更新文档。
PUT /my_index/my_type/my_custom_id
{
"foo": "bar"
}
PUT /my_index/my_type/my_custom_id
{
"foo": "baz"
}
在这种情况下,文档将更新 foo
字段的值为 baz
。
如果您希望从文档中的其他字段中提取 _id
,则必须使用脚本属性。
POST /my_index/my_type/
{
"foo": "bar",
"id_field": "my_custom_id"
}
POST /my_index/my_type/_doc?pipeline=my_pipeline
{
"foo": "baz",
"id_field": "my_custom_id"
}
PUT _ingest/pipeline/my_pipeline
{
"description": "Extract custom ID from id_field",
"processors": [
{
"script": {
"source": "ctx._id = ctx.id_field"
}
}
]
}
在这种情况下,使用 POST
请求为 _id
参数提供值,然后使用脚本将 id_field
中的值提取到 _id
中。
以上是如何使用自定义值制作 _id elasticsearch
的介绍。希望这对你有所帮助。