【发布时间】:2018-08-14 13:38:59
【问题描述】:
有什么方法可以创建文档而不在 URL 中指明 _id?我知道有使用http://localhost:9200/[index_name]/[index_type]/[_id] 创建文档的选项,我在使用此选项创建文档时遇到问题,因为我的_id 不是自动生成的,并且_id 可能有特殊字符,例如# 或&。我目前使用的是 elasticsearch 1.3 版。
【问题讨论】:
标签: elasticsearch
有什么方法可以创建文档而不在 URL 中指明 _id?我知道有使用http://localhost:9200/[index_name]/[index_type]/[_id] 创建文档的选项,我在使用此选项创建文档时遇到问题,因为我的_id 不是自动生成的,并且_id 可能有特殊字符,例如# 或&。我目前使用的是 elasticsearch 1.3 版。
【问题讨论】:
标签: elasticsearch
无需在 URL 中添加 URL 编码 ID 即可创建文档的一种方法是使用 _bulk API。就是这样:
POST index/doc/_bulk
{"index": {"_id": "1234#5678"}}
{"field": "value", "number": 34}
{"index": {"_id": "5555#7896"}}
{"field": "another", "number": 45}
如您所见,您可以索引多个文档,并且它们的 ID 只是在批量请求正文内的引号内给出。 URL 本身只是调用_bulk 端点。
【讨论】:
_bulk 进行任何 CRUD 操作:创建、索引、删除、更新。查看官方文档,有这样的例子