запрос из индекса в другом хосте Elasticsearch - PullRequest
0 голосов
/ 25 марта 2020

Я использую RestHighLevelClient для выполнения запроса. Я создаю свой клиент с несколькими узлами, подобными этому.

RestHighLevelClient client = new RestHighLevelClient(
    RestClient.builder(
            new HttpHost("host1", 9200, "http"),
            new HttpHost("host2", 9200, "http"),
            new HttpHost("host2", 9200, "http")
    )

);

И выполняю некоторые запросы из нескольких индексов , Но некоторые из моих Индекс существует только в одном узле. Это приведет к исключению индекса не найден, если я использую client.search (xxx). Как я могу справиться с этой проблемой.

с помощью IndicesOptions.LENIENT_EXPAND_OPEN не будет выбрасывать индекс не найден, но кажется, что это просто запрос от host1

1 Ответ

0 голосов
/ 25 марта 2020

Я бы предложил вам сформировать кластер ES со всеми 3 узлами. (Рекомендуется) https://www.elastic.co/guide/en/elasticsearch/reference/current/add-elasticsearch-nodes.html

RestClient restClient = RestClient.builder(
        new HttpHost("host1", 9200, "http"),
        new HttpHost("host2", 9200, "http"),
        new HttpHost("host3", 9200, "http")).build();

Однако, если вы хотите использовать указанный хост c для поиска, вам следует использовать создать отдельный RestHighLevelClient для каждого узла. (Не рекомендуется)

RestClient restClientHost1 = RestClient.builder(
        new HttpHost("host1", 9200, "http")).build();
RestClient restClientHost2 = RestClient.builder(
        new HttpHost("host2", 9200, "http")).build();
RestClient restClientHost3 = RestClient.builder(
        new HttpHost("host3", 9200, "http")).build();
...