【发布时间】:2017-12-20 20:12:59
【问题描述】:
我有一个在 AWS 中运行的 ElasticSearch 实例,我可以通过 MeteorJS 应用程序中的 JavaScript 客户端连接到该实例。创建映射(索引和分析器)或更新映射没有问题。
只要有对实例的索引、更新或删除请求,就会出现问题。在服务超过 200 个请求后,ElasticSearch 实例开始抛出请求超时错误,代码为 408。最初,我认为是发出多个单个请求是这种情况,所以我决定进行批量推送。下面是批量推送请求的 sn-p。
var bulk = SearchService.ElasticQueue.splice(0, 1000);
console.log('Size: ', bulk.length);
if (bulk.length > 0) {
EsClient.bulk({
body: bulk
}, function (error, response) {
if (!error) {
console.log(response);
} else {
console.log(error);
}
});
}
SearchService.ElasticQueue 是一种队列形式,一个 cron 作业经常运行以从中获取数据并运行批量请求。我还尝试减少批量请求中的文档数量,并增加连接配置中的请求超时,但这似乎没有帮助。如有任何建议,我将不胜感激。
谢谢。
【问题讨论】:
-
我们也看到了超时。还找不到解释。 30 秒后超时。你找到解决方案了吗?
-
似乎是连接问题。
-
这里也一样。我正在使用
curl并且也有 TIMEOUTS,但我确实注意到记录是随机添加到索引中的。解决这个问题好运吗?
标签: javascript amazon-web-services elasticsearch