我在AWS中运行了一个ElasticSearch实例,我可以通过MeteorJS应用程序中的JavaScript客户端连接到该实例。创建映射(索引和分析器)或更新映射没有问题。
只要存在对实例的索引,更新或删除请求,就会出现问题。在服务于200以上的请求之后,ElasticSearch实例开始抛出请求超时错误,代码为408。最初,我认为多个单一请求是casue,所以我决定进行批量推送。以下是批量推送请求的摘要。
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作业经常运行以从中获取数据并运行批量请求。我还尝试减少批量请求中的文档数量,并在连接配置中增加了请求超时,但似乎没有帮助。我将不胜感激任何建议。
谢谢。
您只能使用一种方法:
wait_for_completion=false
这将返回一个Task ID
然后你可以使用这个Task ID
拉数据