当前位置: 首页 > 面试题库 >

无法连接到弹性搜索:找不到活动连接:没有可用的Elasticsearch节点

东郭昌胤
2023-03-14
问题内容

我只是不明白发生了什么。我的go应用程序无法连接到弹性搜索。该节点可用,已启动并正在运行。我在这里做错了什么?

import (
    "fmt"
    "github.com/olivere/elastic/v7"
    "github.com/sirupsen/logrus"
    "gitlab.com/codereverie/anuvadak-api-server/app_config"
    "gopkg.in/sohlich/elogrus.v7"
    "gopkg.in/validator.v2"
    "io"
    "os"
)

eurl := "http://ip:port"
eUsername := "username"
ePassword := "password"

client, err := elastic.NewClient(elastic.SetURL(eurl), elastic.SetBasicAuth(eUsername, ePassword))

if err != nil {
    fmt.Println("Some error", err.Error())
    panic("Failed to initialize elastic-search client")
}

这里有什么不对的地方?错误说no active connection found: no Elasticsearch node available

这是我在浏览器中命中GET请求时从弹性搜索返回的数据

  {
"name": "ABC-1",
"cluster_name": "ABC",
"cluster_uuid": "3oo05v6lSSmE7DpRh_68Yg",
"version": {
  "number": "7.6.2",
  "build_flavor": "default",
  "build_type": "deb",
  "build_hash": "ef48eb35cf30adf4db14086e8aabd07ef6fb113f",
  "build_date": "2020-03-26T06:34:37.794943Z",
  "build_snapshot": false,
  "lucene_version": "8.4.0",
  "minimum_wire_compatibility_version": "6.8.0",
  "minimum_index_compatibility_version": "6.0.0-beta1"
},
"tagline": "You Know, for Search"

}


问题答案:

no active connection found: no Elasticsearch node available当您继续在客户端中进行嗅探但群集没有可用节点时,通常会发生错误。您可以通过点击来检查集群的状态http://host:port/_nodes/http?pretty=true

如果您elastic不禁用嗅探功能,则Golang客户端将在后台运行进程,该进程/_nodes每15分钟轮询一次API(上面的URL)并维护正常节点列表。如果没有健康的节点,则以该错误结束。

当您的集群配置有私有IP时,也会发生这种情况(注意:我们在OP上进行了调试,我们调试了问题)(因此在/_nodesAPI输出中,您看到的是私有IP,而非公共IP)。具有嗅探功能的客户端开始轮询,获取节点列表并尝试连接到专用IP,但由于该节点无响应(甚至无法在客户端所在的网络中解决)而收到HTTP错误。因此,它标志着它已经死了并发展到另一个。当群集中没有其他节点时,它将报告no active connection found: no Elasticsearch node available

要在客户端禁用嗅探(并直接连接到指定节点-但没有任何弹性),您需要添加&sniff=false到Elastic URL。

可以这样进行连接:

config, _ := config.Parse("http://user:pwd@host:port/index&sniff=false")
client, _ := elastic.NewClientFromConfig(config)


 类似资料:
  • 问题内容: 我只是不明白发生了什么。我的go应用程序无法连接到elasticsearch。该节点可用,已启动并正在运行。我在这里做错了什么? 这里有什么不对的地方?错误说 这是我在浏览器中命中GET请求时从elasticsearch返回的数据 } 问题答案: 当您继续在客户端中进行嗅探但群集没有可用节点时,通常会发生错误。您可以通过点击来检查集群的状态。 如果您不禁用嗅探功能,则Golang客户端

  • 我试图使用docker容器创建一个弹性搜索安装。我只使用Elastic.io提供者的映像。 我不知道为什么,但logstash告诉我,他无法连接到带有此错误消息的ElasticSearch实例: 如果logstash真的得到了我的设置,有人能告诉我为什么他使用了一个坏的主机事件吗?

  • 我正在windows计算机上安装vue storefront api和vue storefront。在windows power shell或命令提示符下运行docker compose up时,我收到一个错误,指出找不到现有的Kibana索引、“prevState”:“red”、“prevMsg”:“无法连接到Elasticsearch at”http://es1:9200."}. 在kiban

  • 我在localhost:9200上有一个本地弹性搜索,当我向浏览器输入地址时,我得到了以下内容: 当我尝试运行我的应用程序时,我得到以下错误: 如何用我的Jhipster(V5.0.0-beta.3)后端连接到这个弹性服务器?

  • 我目前正在运行elastic search和kibana 7.0.0版,在我的项目中有一个docker compose文件 我能够连接到端口5601上的kibana(索引和搜索数据),以及端口9200上的弹性搜索。 我试图使用NEST连接到弹性这里是我的基本配置 当我通过NEST执行任何命令时,如ping、健康检查或搜索等,我检索到以下异常。这让我相信docker容器(linux容器)中存在一些与

  • 我正在尝试使用Kubernetes 1.7.12 fluentd elasticsearch插件:https://github.com/kubernetes/kubernetes/tree/v1.7.12/cluster/addons/fluentd-elasticsearch ElasticSearch启动并可以响应: 但Kibana仍然无法连接到它。连接错误始于: ElasticSearch启