Node.js 如何使用nodejs Elasticsearch包对aws Elasticsearch上的数据进行索引
我曾与Elasticsearch合作,在was ES服务上创建了一个域,并尝试在AWS上索引mongoDB数据。但由于我的域受密码保护,我无法在那里索引数据。我正在使用的节点脚本能够在我的本地主机(没有任何密码)上索引mongoDB数据,所以我确信我的脚本没有问题。Node.js 如何使用nodejs Elasticsearch包对aws Elasticsearch上的数据进行索引,node.js,
elasticsearch,Node.js,
elasticsearch,我曾与Elasticsearch合作,在was ES服务上创建了一个域,并尝试在AWS上索引mongoDB数据。但由于我的域受密码保护,我无法在那里索引数据。我正在使用的节点脚本能够在我的本地主机(没有任何密码)上索引mongoDB数据,所以我确信我的脚本没有问题。 这是我用来连接elasticsearch的连接函数 const elasticClient = new elasticsearch.Client({ host: config.elasticsearch.url + '' +
这是我用来连接elasticsearch的连接函数
const elasticClient = new elasticsearch.Client({
host: config.elasticsearch.url + '' + config.elasticsearch.port,
requestTimeout: 6 * 350 * 25000,
requestTimeout: Infinity,
keepAlive: false,
// log: 'debug',
});
我的配置
"elasticsearch": {
"url": "HTTP://localhost",
"port": "9200",
"elasticsearchIndices": {
"collection": {
"index": "business",
"type": "location",
"collectionName": "collection"
}
}
},
嗯,我只需要把用户名和密码放在这里的某个地方,但我不知道放在哪里。在官方文档中,它表示将用户名和密码放在elasticsearch连接字符串上,如
const elasticClient = new elasticsearch.Client({
host: config.elasticsearch.url + '' + config.elasticsearch.port,
auth: 'username:password',
requestTimeout: 6 * 350 * 25000,
requestTimeout: Infinity,
keepAlive: false,
// log: 'debug',
});
但这也不起作用。如果有人有解决办法,请帮我解决。
关于您需要使用AWS sdk node.js包来签署您的请求,如下所述:@Val感谢您的回复。但是有没有其他方法可以让我索引我的MongoDB集合呢。这里AWS-SDK正在逐个导入JSON文件。我需要在索引中放入大量数据。您可以改用
\u bulk
端点。你可以参考@joe的答案,这正好说明了这一点works@Val再次您好,现在显示此错误error:error[ERR_TLS_CERT_ALTNAME_INVALID]:主机名/IP与证书的ALTNAME不匹配:Host:search-johukum-npp7rd7lsyfvol7gw2wxrb4omi.ap-souther-1.es.amazonaws.com/。不在证书的别名中:DNS:*.ap-southest-1.es.amazonaws.com
您的URL必须是https://
,而不是http://