You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Elastic Search运行一段时间后返回null问题求助

自托管Elasticsearch集群Go客户端请求返回null的问题排查与解决需求

我搭建了自托管Elasticsearch集群,使用Go客户端向其发送请求。运行一段时间后,Elasticsearch开始返回null响应。

调试后我推测可能是连接不安全,于是修改Go客户端,确保每次API请求都与Elasticsearch建立安全连接,客户端代码如下:

func getResponseFromElastic(payload string) Response {
    tr := &http.Transport{
        TLSClientConfig: getTLSConfig(ConfigStruct.ElasticStruct.CaCert),
        Proxy:           nil,
    }

    data := strings.NewReader(payload)
    client := &http.Client{Transport: tr}

    elasticUrl := ConfigStruct.ElasticStruct.ElasticUrl
    elasticIndex := ConfigStruct.ElasticStruct.Index
    httpUrl := elasticUrl + elasticIndex + "/_search"
    req, err := http.NewRequest("GET", httpUrl, data)

    var response Response = Response{}

    if err != nil {
        ErrorLogger.Println(err)
        return response
    }
    req.Header.Set("Content-Type", "application/json")
    req.SetBasicAuth(ConfigStruct.ElasticStruct.ElasticUsername, ConfigStruct.ElasticStruct.ElasticPassword)
    resp, err := client.Do(req)

    if err != nil {
        ErrorLogger.Println(err)
        return response
    }
    defer func() {
        err := resp.Body.Close()
        if err != nil {
            ErrorLogger.Println(err)
        }
    }()
    bodyText, err := io.ReadAll(resp.Body)
    if err != nil {
        ErrorLogger.Println(err)
        return response
    }
}

getTLSConfig函数代码如下:

func getTLSConfig(caCertFile string) *tls.Config {
    var caCert []byte
    var err error
    var caCertPool *x509.CertPool
    caCert, err = ioutil.ReadFile(caCertFile)
    if err != nil {
        ErrorLogger.Fatal("Error opening cert file", caCertFile, ", error ", err)
    }
    caCertPool = x509.NewCertPool()
    caCertPool.AppendCertsFromPEM(caCert)

    return &tls.Config{
        InsecureSkipVerify: false,
        RootCAs:            caCertPool,
    }
}

我的ConfigStruct.ElasticStruct.ElasticUrl配置为:

"https://self-hostedes001:9200/",

已尝试的解决措施:

  • 增大Elasticsearch节点的JVM堆大小,避免因内存占用过高阻塞请求;
  • 在API请求中添加CA证书,确保ES可识别合法用户;
  • 临时解决方案:重启ES集群后恢复正常,但一段时间后又会返回null。

现寻求该问题的根本解决方法。

内容的提问来源于stack exchange,提问作者Tarun Datwani

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 18:44:59