为集成测试禁用屏蔽

Disabling shield for intergration tests

我有一个应用程序使用 JAVA API 通过传输客户端连接到另一台服务器上的弹性搜索节点。该节点启用了屏蔽安全,因此我使用 maven 来获取屏蔽罐。我的应用 运行 没问题。但是,现在我正在尝试为我的应用程序的构建过程设置集成测试。因此,我没有尝试传输客户端,而是尝试 运行 一个本地节点来 运行 我的测试。但是,本地节点投诉以下问题。

  1. 许可证有效期仅为 30 天。该文档很好地描述了如何使用各种工具执行此操作,但它没有说明如何通过 JAVA API.
  2. 更新许可证
  3. 我得到一个 org.elasticsearch.shield.authz.AuthorizationException:操作 [indices:data/write/index] 未授权用户 [__es_system_user]。发生这种情况是因为我的节点没有配置任何用户。同样,该文档完美地描述了如何将用户添加到节点,但没有解释如何使用 JAVA API 来完成此操作。

这我想知道是否可以只为集成测试禁用屏蔽。我尝试了以下方法,但没有用。感谢任何帮助。

nodeBuilder().local(true).settings(ImmutableSettings.builder()
    .put("shield.enabled", false)).build()

您使用的是哪个版本的 Elasticsearch 和 Shield? shield.enabled 适合我;我刚刚在一个使用 ES 1.5.2 和 Shield 1.2.0

的简单 Maven 项目中做了以下操作
final Node node = NodeBuilder.nodeBuilder()
            .settings(ImmutableSettings.builder().put("shield.enabled", false))
            .local(true).node();
Client client = node.client();
ClusterHealthResponse response = client.admin().cluster().prepareHealth().get();
System.out.println(response.toString());

执行此操作时没有关于许可的错误。如果您仍然有一些错误,您可以将它们添加到您的原始 post?