elasticsearch - 无法通过更新更新密集矢量场 API

elasticsearch - unable to update a dense vector field through update API

您好,我正在尝试更新其中一个 es 文档中的密集矢量数据,但无法使用映射中不存在的错误字段进行更新,即使该字段存在时也是如此

映射:

{
  "sidx-4111c0fc-a8ba-523c-9851-34a2b803643b" : {
    "mappings" : {
      "properties" : {
       
        "dense_vector_field" : {
          "type" : "dense_vector",
          "dims" : 768
        },
       
        "searchResultPreview" : {
          "type" : "text",
          "fields" : {
            "search_result_preview" : {
              "type" : "keyword"
            }
          }
        }
      }
    }
  }

查询-

POST /sidx-4111c0fc-a8ba-523c-9851-34a2b803643b/_update/xLVRVHUB3NwnlUUimDIR
{
  "dense_vector_field": [...]
}

错误:

{
  "error" : {
    "root_cause" : [
      {
        "type" : "x_content_parse_exception",
        "reason" : "[2:3] [UpdateRequest] unknown field [dense_vector_field]"
      }
    ],
    "type" : "x_content_parse_exception",
    "reason" : "[2:3] [UpdateRequest] unknown field [dense_vector_field]"
  },
  "status" : 400
}

我是不是遗漏了什么?

编辑 - 由于尺寸巨大而忽略提及矢量数据

问题是 _update API 需要 docscript,所以你需要这样做:

POST /sidx-4111c0fc-a8ba-523c-9851-34a2b803643b/_update/xLVRVHUB3NwnlUUimDIR
{
  "doc": {
    "dense_vector_field": [...]
  }
}

或者这样使用 script:

POST /sidx-4111c0fc-a8ba-523c-9851-34a2b803643b/_update/xLVRVHUB3NwnlUUimDIR
{
  "script": {
    "source": "ctx._source.dense_vector_field = params.vector",
    "params": {
      "vector": [...]
    }
  } 
}