AWS ElasticSearch 2.3 Java HTTP批量API
我想在AWS ElasticSearch 2.3上使用Java中的批量HTTP api。 当我使用rest客户机进行批量加载时,会出现以下错误:AWS ElasticSearch 2.3 Java HTTP批量API,java,amazon-web-services,
amazon-elasticsearch,Java,Amazon Web Services,
amazon Elasticsearch,我想在AWS ElasticSearch 2.3上使用Java中的批量HTTP api。 当我使用rest客户机进行批量加载时,会出现以下错误: 504 GATEWAY_TIMEOUT 当我在Java中以Lambda的形式运行它时,对于HTTP POST,我得到: { "errorMessage": "2017-01-09T19:05:32.925Z 8e8164a7-d69e-11e6-8954-f3ac8e70b5be Task timed out aft
504 GATEWAY_TIMEOUT
当我在Java中以Lambda的形式运行它时,对于HTTP POST,我得到:
{
"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
但到目前为止,它没有产生任何影响。在JavaLambda中,我从S3位置以InputStream的形式加载数据。
在这一点上,我对Java HTTP有哪些选择?
索引设置中还有什么我可以尝试的吗?
AWS访问策略中还有什么我可以尝试的吗?
谢谢你抽出时间
1编辑:
我还尝试了以下参数:_bulk?action.write_consistency=one&refresh,但到目前为止没有任何区别
2编辑:
以下是使我的批量加载工作的原因-设置一致性参数(我不需要设置刷新间隔):
根据我的经验,当集群无法满足索引复制设置时,可能会出现问题。这可能发生在网络分区期间,或者如果您只是设置了物理集群无法满足的复制要求 在我的例子中,当我将生产设置(副本的数量:3)应用到我的开发集群(即单节点集群)时,就会发生这种情况 您的两个解决方案(将副本设置为1或将一致性设置为1)解决了此问题,因为它们允许弹性继续执行批量索引,而不等待其他副本联机 弹性搜索可能会有一个更直观的失败信息,也许他们在弹性5
根据我的经验,将群集设置为单个,当群集无法满足索引复制设置时,可能会出现此问题。这可能发生在网络分区期间,或者如果您只是设置了物理集群无法满足的复制要求 在我的例子中,当我将生产设置(副本的数量:3)应用到我的开发集群(即单节点集群)时,就会发生这种情况 您的两个解决方案(将副本设置为1或将一致性设置为1)解决了此问题,因为它们允许弹性继续执行批量索引,而不等待其他副本联机 弹性搜索可能会有一个更直观的失败信息,也许他们在弹性5 将群集设置为单个
URIBuilder uriBuilder = new URIBuilder(myuri);
uriBuilder = uriBuilder.addParameter("consistency", "one");
HttpPost post = new HttpPost(uriBuilder.build());
HttpEntity entity = new InputStreamEntity(myInputStream);
post.setEntity(entity);