我正在尝试在 AWS ElasticSearch 2.3 上使用 Java 中的批量 HTTP api。当我使用休息客户端进行批量加载时,出现以下错误:
504 GATEWAY_TIMEOUT
当我在 Java 中将它作为 Lambda 运行时,对于 HTTP Posts,我得到:
{
"errorMessage": "2017-01-09T19:05:32.925Z 8e8164a7-d69e-11e6-8954-f3ac8e70b5be Task timed out after 15.00 seconds"
}
通过测试,我注意到批量 API 不适用于以下设置:
"number_of_shards" : 5,
"number_of_replicas" : 5
当分片和副本设置为 1 时,我可以进行批量加载没有问题。我也尝试使用此设置来允许我的批量加载:
"refresh_interval" : -1
但到目前为止,它根本没有任何影响。在 Java Lambda 中,我将数据作为 InputStream 从 S3 位置加载。对于 Java HTTP,我目前有哪些选择?我可以尝试索引设置中的其他内容吗?我可以尝试 AWS 访问策略中的其他内容吗?感谢您的时间。
1编辑:
我也尝试过这些参数: _bulk?action.write_consistency=one&refresh 但到目前为止没有任何区别。
2编辑:
这就是我的批量加载工作的原因 - 设置一致性参数(我不需要设置 refresh_interval):
URIBuilder uriBuilder = new URIBuilder(myuri);
uriBuilder = uriBuilder.addParameter("consistency", "one");
HttpPost post = new HttpPost(uriBuilder.build());
HttpEntity entity = new InputStreamEntity(myInputStream);
post.setEntity(entity);