elasticsearch-无法通过更新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": [...]
    }
  } 
}

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...