📜  如何使用自定义值制作 _id elasticsearch (1)

📅  最后修改于: 2023-12-03 15:24:02.034000             🧑  作者: Mango

如何使用自定义值制作 _id elasticsearch

在 Elasticsearch 中,每个文档都有一个唯一的 _id 标识符。默认情况下,_id 是自动分配的,并且是每个文档的版本控制和唯一性检查的基础。但是,在某些情况下,需要自己定义 _id 值。下面介绍如何使用自定义值制作 _id

使用 PUT 请求和自定义 ID 创建文档

可以使用 PUT 请求和自定义 ID 来创建文档。下面的代码片段演示了如何使用 PUT 请求创建具有自定义 _id 的文档。

PUT /my_index/my_type/my_custom_id
{
  "foo": "bar"
}

在这种情况下,索引为 my_index,类型为 my_type 的文档将具有 _idmy_custom_id。根据需要更改索引、类型和 _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

如果您希望从文档中的其他字段中提取 _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的介绍。希望这对你有所帮助。