我们在gcp上有弹性主持。当我试图简单地发布文档时,出现了一个错误。我正在使用他们的node.js包,遇到以下错误:
PS C:\Projects\foo> node --experimental-modules --unhandled-rejections=strict app.js
(node:19356) ExperimentalWarning: The ESM module loader is experimental.
(node:19356) ExperimentalWarning: Conditional exports is an experimental feature. This feature could change at any time
Posting to Elastic => 5f91dfb0c64004000aab6c9b
C:\Projects\foo\node_modules\@elastic\elasticsearch\lib\Transport.js:257
const error = new ResponseError(result)
^
ResponseError: Response Error
at IncomingMessage.<anonymous> (C:\Projects\foo\node_modules\@elastic\elasticsearch\lib\Transport.js:257:25)
at IncomingMessage.emit (events.js:323:22)
at endReadableNT (_stream_readable.js:1204:12)
at processTicksAndRejections (internal/process/task_queues.js:84:21) {
name: 'ResponseError',
meta: {
body: { error: 'Routing Error. The path you have requested is invalid.' },
statusCode: 404,
headers: {
'content-type': 'application/json;charset=utf-8',
server: 'Jetty(9.4.30.v20200611)',
'x-cloud-request-id': 'srCq9DMFQVWuGsdXxgWhjA',
'x-content-type-options': 'nosniff',
'x-found-handling-cluster': '[Removed]',
'x-found-handling-instance': 'instance-0000000001',
'x-frame-options': 'SAMEORIGIN',
'x-request-id': 'a2696b33-e4dc-4dfc-a8b1-f7ec17906ff7',
'x-runtime': '0.010689',
'x-xss-protection': '1; mode=block',
date: 'Mon, 09 Nov 2020 21:28:28 GMT',
'content-length': '66'
},
meta: {
context: null,
request: [Object],
name: 'elasticsearch-js',
connection: [Object],
attempts: 0,
aborted: false
}
}
}
我的客户设置如下
const client = new Client({
node: 'https://[REMOVED].ent-search.us-central1.gcp.cloud.es.io',
auth: {
apiKey: 'Bearer private-[REMOVED]'
}
});
然后我尝试将一个json文件作为数组发送到elastic。
client.helpers.bulk({
datasource: posts,
onDocument(doc) {
return {
create: {_index: 'my-index', _id: elasticPost.id}
};
}
});
更新:
json名称必须为小写。例如:
不起作用:
{
"Id": 123456
}
作品:
{
"id": 123456
}
另一件事可能与需要elastic提供的cloud id有关,我不确定这是否也是必需的,但是小写允许我将文档直接上传到elastic中。
2条答案
按热度按时间ffdz8vbo1#
json名称必须为小写。例如:
不起作用:
作品:
3pmvbmvn2#
我觉得你有一个太多了
create
在您返回的命令中onDocument
. 您可以返回的命令如下所述:所以,去掉一个
create
层,它应该工作:更新:
查看主机名
*.ent-search.*
,看起来你在用elasticsearch
客户端尝试连接到企业搜索后端,这无法工作,因为后者不支持_bulk
应用程序编程接口。如果连接到appsearch后端,则无法使用
_bulk
端点(即。client.helpers.bulk()
). 相反,您需要通过appsearch documents api添加文档。请随意分享更多关于你想要达到的目标的信息。