gpt4 book ai didi

elasticsearch - 在Elasticsearch中更新嵌套对象

转载 作者:行者123 更新时间:2023-12-02 23:17:27 29 4
gpt4 key购买 nike

我有下面的索引映射

{
"mappings": {
"xxxxx": {
"properties": {
"ID": {
"type": "text"
},
"pairs": {
"type": "nested"
},
"xxxxx": {
"type": "text"
}
}
}
}
}
pairs字段是具有以下结构的对象的数组
{
"id": "",
"Answer": "",
"Question": []
}

我想做的是检索特定的嵌套对象并更新它。我已经尝试过使用部分文档/脚本的 updateByQuery方法,但是我无法更新

脚本
var theScript = {
"inline": "ctx._source.Answer = 'Elastic search update Test'"
}

client.updateByQuery({
index: 'sample',
_source: false,
body: {
query: {
bool: {
must: [
{
"match": {
"ID": '2rXdCf5OM9g1ebPNFdZNqW'
}
},
{
"nested": {
"path": "pairs",
"query": {
"match": {
"pairs.id": "c1vNGnnQLuk"
}
},
"inner_hits": {}
}
}
]
}
},
"script": theScript
}
},function(err, body){
if(err){
throw err;
}
console.log('body: ', body)
console.log('data: ', body.hits.hits)
})

部分文档
client.updateByQuery({
index: 'sample',
_source: false,
body: {
query: {
bool: {
must: [
{
"match": {
"ID": '2rXdCf5OM9g1ebPNFdZNqW'
}
},
{
"nested": {
"path": "pairs",
"query": {
"match": {
"pairs.id": "c1vNGnnQLuk"
}
},
"inner_hits": {}
}
}
]
}
},
"doc": {
"Answer": 'Elastic search update Test'
}
}
},function(err, body){
if(err){
throw err;
}
console.log('body: ', body)
console.log('data: ', body.hits.hits)
})

我收到以下错误:

部分更新
Error: [parsing_exception] Unknown key for a START_OBJECT in [doc]., with { line=1 & col=191 }

脚本
Error: [illegal_argument_exception] [sample][conversation][AWa-p9zBTJHq-_gvo-Af] didn't store _source

注意理想情况下,我想为此使用部分文档更新,因为嵌套的对象有点复杂,不可能编写内联脚本

Elasticsearch版本-5.6

更新

做这样的事情
{
"script" : {
"inline": "ctx._source.pairs= params.pairs",
"lang": "painless",
"params" : {
"pairs" : [{...}, {...}, ...]
}
}
}

但这实际上意味着每次我更新时,我都将重写整个 pairs字段(即使我只更新数组中的一个对象)-这对我来说并不理想还是可以吗?

最佳答案

有一个页面包含有关嵌套类型管理的快速教程:How to manage nested objects in Elasticsearch documents。它说明了如何添加,删除和编辑嵌套对象。

关于elasticsearch - 在Elasticsearch中更新嵌套对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53046939/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com