gpt4 book ai didi

java - AWS ElasticSearch 2.3 Java HTTP 批量 API

转载 作者:行者123 更新时间:2023-12-02 03:07:31 25 4
gpt4 key购买 nike

我正在尝试在 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 中,我从 S3 位置将数据作为 InputStream 加载。此时对于 Java HTTP 我有哪些选择?索引设置中还有其他我可以尝试的吗?AWS 访问策略中还有其他我可以尝试的吗?感谢您抽出时间。

1编辑:

我也尝试过这些参数:_bulk?action.write_consistency=one&refresh 但到目前为止没有什么区别。

2编辑:

这就是我的批量加载工作的原因 - 设置一致性参数(我不需要设置刷新间隔):

            URIBuilder uriBuilder = new URIBuilder(myuri);
uriBuilder = uriBuilder.addParameter("consistency", "one");
HttpPost post = new HttpPost(uriBuilder.build());
HttpEntity entity = new InputStreamEntity(myInputStream);
post.setEntity(entity);

最佳答案

根据我的经验,当集群无法满足索引复制设置时,可能会出现此问题。这种情况可能会在网络分区期间发生,或者如果您只是设置了物理集群无法满足的复制要求。

就我而言,当我将生产设置 (number_of_replicas : 3) 应用到我的开发集群(这是单节点集群)时,就会发生这种情况。

您的两个解决方案(将副本设置为 1 或将一致性设置为 1)解决了此问题,因为它们允许 Elastic 继续批量索引,而无需等待其他副本上线。

Elastic Search 可能会在失败时提供更直观的消息,也许在 Elastic 5 中就是如此。

将集群设置为单个集群

关于java - AWS ElasticSearch 2.3 Java HTTP 批量 API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41555352/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com