问题描述
您好,我正在尝试更新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": [...]
}
}
}