gpt4 book ai didi

javascript - Elasticsearch JS - 变量 [x] 未定义

转载 作者:行者123 更新时间:2023-12-01 02:23:39 25 4
gpt4 key购买 nike

在测试 Elasticsearch 索引中,我已对文档建立了索引,现在我想通过将文档的 length 属性设置为 100 来更新该文档。我想通过 elasticsearch 通过脚本来完成此操作(因为这是说明我的问题的简化示例)包。

client.update({
index: 'test',
type: 'object',
id: '1',
body: {
script: 'ctx._source.length = length',
params: { length: 100 }
}
})

但是,我收到以下错误:

{
"error": {
"root_cause": [
{
"type": "remote_transport_exception",
"reason": "[6pAE96Q][127.0.0.1:9300][indices:data/write/update[s]]"
}
],
"type": "illegal_argument_exception",
"reason": "failed to execute script",
"caused_by": {
"type": "script_exception",
"reason": "compile error",
"script_stack": [
"ctx._source.length = length",
" ^---- HERE"
],
"script": "ctx._source.length = length",
"lang": "painless",
"caused_by": {
"type": "illegal_argument_exception",
"reason": "Variable [length]is not defined."
}
}
},
"status": 400
}

即使我已将 length 属性包含在 body.params.length 中,也会发生这种情况。

使用以下内容:

  • Elasticsearch 服务器v6.1.1
  • Elasticsearch JavaScript 客户端 v14.1.0

如何解决这个问题?

最佳答案

文档错误于 https://www.elastic.co/guide/en/elasticsearch/client/javascript-api/current/api-reference.html#api-update

在他们的示例中,他们输入:

client.update({
index: 'myindex',
type: 'mytype',
id: '1',
body: {
script: 'ctx._source.tags += tag',
params: { tag: 'some new tag' }
}
}, function (error, response) {
// ...
});

事实上,body.script 应该是:

client.update({  index: 'myindex',  type: 'mytype',  id: '1',  body: {    script: {      lang: 'painless',      source: 'ctx._source.tags += params.tag',      params: { tag: 'some new tag' }    }  }}, function (error, response) {  // ...});

Therefore, if you change your script to:

script: {
lang: 'painless',
source: 'ctx._source.length = params.length',
params: { length: 100 }
}

它应该可以工作!

<小时/>

您可能需要引用 Painless Examples - Updating Fields with Painless页!

关于javascript - Elasticsearch JS - 变量 [x] 未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48994803/

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