ElasticSearch-无法通过更新api更新密集向量场

3htmauhk  于 2021-06-14  发布在  ElasticSearch
关注(0)|答案(1)|浏览(506)

您好,我正在尝试更新一个es文档中的密集矢量数据,无法更新Map中不存在的错误字段,即使该字段存在
Map:

{
  "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
}

我是不是漏了什么?
编辑-由于尺寸过大而忽略了矢量数据

ctehm74n

ctehm74n1#

问题是 _update api要求 doc 或者 script ,所以您需要这样做:

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": [...]
    }
  } 
}

相关问题