Эластичный поиск HightlevelRestClient SearchВопрос тайм-аут - PullRequest
0 голосов
/ 18 сентября 2018

Я формирую SearchRequest и с помощью ElasticSearch RestHighLevelClient пытаюсь получить документы из ElasticSearch.Но, хотя при поиске документов в ES появляется следующая ошибка:

Найдите трассировку стека ниже:

`18-Sep-2018 06:35:55.819 SEVERE [Thread-10] com.demo.searchengine.dao.DocumentSearch.getDocumentByName listener timeout after waiting for [30000] ms
 java.io.IOException: listener timeout after waiting for [30000] ms
    at org.elasticsearch.client.RestClient$SyncResponseListener.get(RestClient.java:663)
    at org.elasticsearch.client.RestClient.performRequest(RestClient.java:222)
    at org.elasticsearch.client.RestClient.performRequest(RestClient.java:194)
    at org.elasticsearch.client.RestHighLevelClient.performRequest(RestHighLevelClient.java:443)
    at org.elasticsearch.client.RestHighLevelClient.performRequestAndParseEntity(RestHighLevelClient.java:429)
    at org.elasticsearch.client.RestHighLevelClient.search(RestHighLevelClient.java:368)
    at com.demo.searchengine.dao.DocumentSearch.getDocumentByName(DocumentSearch.java:76)
    at com.demo.searchengineservice.mqservice.Service.searchByDocuments(Service.java:43)
    at com.demo.searchengineservice.mqservice.Consumer.consume(Consumer.java:27)
    at com.demo.utils.Consumer$1$1.run(Consumer.java:89)
    at java.lang.Thread.run(Unknown Source)`

Пожалуйста, найдите мой код ниже:

public class SearchEngineClient {
    private static PropertiesFile propertiesFile = PropertiesFile.getInstance();

    private final static String elasticHost =propertiesFile.extractPropertiesFile().getProperty("ELASTIC_HOST");

    private static RestHighLevelClient instance = new RestHighLevelClient(RestClient.builder(
            new HttpHost(elasticHost, 9200, "http"),
            new HttpHost(elasticHost, 9201, "http")));

    public static RestHighLevelClient getInstance() {
        return instance;
    }
}

Использую экземпляр клиента ниже для получения ответа от ES.

searchResponse = SearchEngineClient.getInstance().search(contentSearchRequest);

1 Ответ

0 голосов
/ 19 сентября 2018

Похоже, проблема в том, что ваш серверasticsearch недоступен извне.По умолчанию ES-сервер будет связываться только с localhost, что означает, что он недоступен извне.

Так что на вашем удаленном ES-сервере вы должны найти файл конфигурацииasticsearch.yml.В этом файле найдите и измените network.host на свой IP-адрес или 0.0.0.0 для прослушивания на всех интерфейсах.После этого изменения вам нужно перезапустить ES.

...