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 需要 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": [...]
}
}
}
您好,我正在尝试更新其中一个 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 需要 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": [...]
}
}
}