【问题标题】:Elasticsearch create doc with custom _idElasticsearch 使用自定义 _id 创建文档
【发布时间】:2018-08-14 13:38:59
【问题描述】:

有什么方法可以创建文档而不在 URL 中指明 _id?我知道有使用http://localhost:9200/[index_name]/[index_type]/[_id] 创建文档的选项,我在使用此选项创建文档时遇到问题,因为我的_id 不是自动生成的,并且_id 可能有特殊字符,例如# 或&。我目前使用的是 elasticsearch 1.3 版。

【问题讨论】:

    标签: elasticsearch


    【解决方案1】:

    无需在 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 端点。

    【讨论】:

    • 我无法在 Sense 中执行上述示例。它说“ActionRequestValidationException [Validation Failed: 1: no requests added;]”..我实际上是逐行写的
    • 确保在文档后添加一个新行(它没有出现在我的回答中)
    • 我在 Sense 中执行上述示例时出错。我用我的索引名称替换了“索引”这个词。我的错。其实我也可以用这个_bulk来更新吧?
    • 是的,您可以使用 _bulk 进行任何 CRUD 操作:创建、索引、删除、更新。查看官方文档,有这样的例子
    • 酷,很高兴它有帮助!
    猜你喜欢
    • 2018-06-02
    • 1970-01-01
    • 1970-01-01
    • 2016-12-07
    • 1970-01-01
    • 2018-04-30
    • 2021-12-25
    • 2015-07-29
    • 1970-01-01
    相关资源
    最近更新 更多