代码之家  ›  专栏  ›  技术社区  ›  Raedwald

Elasticsearch拒绝文档上载,因为尝试创建新的映射类型

  •  0
  • Raedwald  · 技术社区  · 7 年前

    我正在尝试创建一个新的Elasticsearch文档,在一个名为uploads的索引中,使用一个自动生成的文档ID。我通过将新文档发布到 /uploads/_doc/ . 然而,Elasticsearch拒绝上传,因为它返回一个HTTP响应,状态为400 Bad Request。

    拒绝对[uploads]的映射更新,因为最终映射将有多个类型:[[u doc,uploads]

    我没有尝试创建新的映射类型 each index may now hold only one mapping type .

    为什么Elasticsearch将我的请求解释为试图添加映射类型?如何更改正在执行的操作以创建新文档。


    使用 curl 显示索引当前有一种映射类型,称为 uploads :

    curl http://localhost:9200/uploads?pretty
    {
      "uploads" : {
        "aliases" : { },
        "mappings" : {
          "uploads" : {
            "properties" : {
            ...
            }
          }
        },
        "settings" : {
          "index" : {
            ...
            "provided_name" : "uploads"
          }
        }
      }
    }
    
    1 回复  |  直到 7 年前
        1
  •  2
  •   Raedwald    7 年前

    您正在将邮件发送到错误的URL。URL必须给出索引名和文档类型,而不是使用 _doc

    根据你的地图 uploads 索引具有 上传 文件类型:

    {
      "uploads" : {                   <--- index name
        "aliases" : { },
        "mappings" : {
          "uploads" : {              <-----doc_type name
            "properties" : {
            ...
            }
          }
        }
    

    因此,您应该使用此文档类型,而不是 _医生 . 也就是说,邮寄到 /uploads/uploads ,而不是 /uploads/_doc .