【问题标题】:Elastic Search HightlevelRestClient SearchRequest Timeout issueElastic Search HightlevelRestClient SearchRequest 超时问题
【发布时间】:2018-09-18 11:07:22
【问题描述】:

我正在形成一个 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);

【问题讨论】:

  • 可以从应用服务器访问弹性服务器吗?在提供的弹性服务器的 ip/port 上尝试 telnet。

标签: java elasticsearch elastic-stack


【解决方案1】:

您的弹性搜索服务器似乎存在问题,无法从外部访问。 ES 服务器默认只会绑定到 localhost,也就是说外部无法访问。

所以在你的远程 ES 服务器上你应该找到 elasticsearch.yml 配置文件。在此文件中找到 network.host 并将其更改为您的 IP 地址或 0.0.0.0 以侦听所有接口。修改后需要重启 ES。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-13
    • 2020-03-11
    • 2020-11-01
    • 2016-04-23
    相关资源
    最近更新 更多