按查询删除 API 作为 curl 工作,但不在 Node-Red 中工作



背景: 我试图实现的是使用单个 API 调用从弹性中删除多个值。我们的应用程序使用Node-Red来创建后端API。

我正在使用下面的 curl 命令来删除多个文档 ID,它就像一个魅力。它会删除使用 id 的xxxxxyyyyy找到的文档。

POST /tom-access/doc/_delete_by_query
{
"query": {
"terms": {
"_id": [
"xxxxx",
"yyyyy"
]
}
}
}

但是,当我尝试通过 Node-Red(使用 JavaScript 函数)执行相同的操作时,我得到以下错误。

{">

错误":{"root_cause":[{"类型":"action_request_validation_exception","原因":"验证 失败:1:查询为 缺失;"}],"类型":"action_request_validation_exception","原因":"验证 失败:1:查询丢失;"},"状态":400}

以下是我在 Node-Red JavaScript 函数中的内容:

if (!msg.headers) msg.headers = {};
msg.req = {
"query": {
"terms": {
"id": [
"xxxxx",
"yyyyy"
]
}
}  
};
msg.headers = {
"Content-Type": "application/json",
"Authorization" : "Basic xxxxxxxxxxxxxxxxxxxxx"
};
msg.method = "POST"
// New elastic
msg.url = "http://elastic.test.com/tom-access/doc/_delete_by_query";
return msg;

下一个节点使用上面的对象进行 HTTP CALLmsg但会导致上述错误。我也是Node-Red,JavaScript和Elastic的新手。哎呀!!

终结点可能期望查询位于请求正文中。

您应该将其设置为msg.payload而不是msg.req

相关内容

  • 没有找到相关文章

最新更新