0

У меня есть приложение, которое подключается к узлу упругого поиска на другом сервере через клиент транспорта с использованием JAVA API. У узла есть защита экрана, поэтому я использую maven для извлечения экрана. Мое приложение работает нормально. Однако теперь я пытаюсь настроить интеграционные тесты для процесса сборки моего приложения. Таким образом, вместо того, чтобы пытаться использовать Транспортный клиент, я пытаюсь запустить локальный узел для запуска моих тестов. Однако местный узел жалуется на следующие проблемы.Отключить экран для тестов интеграции

  1. Лицензия действительна только в течение 30 дней. Документация прекрасно описывает, как это сделать, используя всевозможные инструменты, но не говорит, как обновлять лицензию с помощью JAVA API.
  2. Я получаю org.elasticsearch.shield.authz.AuthorizationException: действие [индексы: data/write/index] неавторизовано для пользователя [__es_system_user]. Это происходит потому, что мой узел не настроил пользователей. Вновь документация прекрасно описывает, как добавлять пользователей к узлу, но не объясняет, как это сделать, используя JAVA API.

Это меня интересует, можно ли отключить щит для тестов интеграции. Я попробовал следующее, но это не сработало. Любая помощь приветствуется.

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

ответ

0

Какую версию Elasticsearch и Shield вы используете? shield.enabled работает для меня; Я просто сделал следующее в простом проекте Maven с ES 1.5.2 и 1.2.0 Щитом

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()); 

нет ошибок о лицензировании, делая это. Если у вас все еще есть некоторые ошибки, вы можете добавить их в свой исходный пост?

+0

Так странно, работая сейчас. Похоже, я ответил на свой вопрос. Кстати, я создал узел, используя вышеприведенный код. Есть ли способ подключиться к этому узлу из одного и того же jvm с помощью TransportClient? – dingdong

+1

Да возможно: 'InternalNode internalNode = (InternalNode) узел; TransportClient transportClient = new TransportClient (ImmutableSettings.settingsBuilder() .put ("shield.enabled", false) .put ("node.local", true)); TransportAddress address = internalNode.injector(). GetInstance (TransportService.class) .boundAddress(). PublishAddress(); transportClient.addTransportAddress (адрес); ' На основании тестового кода elasticsearch: https://github.com/elastic/elasticsearch/blob/1.x/src/test/java/org/elasticsearch/test/InternalTestCluster.java # L854-L869 – jaymode

+0

У меня нет доступа к моему внутреннему узлу из кода, который запускает TransportClient. Есть ли какая-то статическая функция для извлечения последнего созданного активного узла? – dingdong

Смежные вопросы