web-dev-qa-db-ja.com

Elastic Searchで接続がエラーを拒否しました

curl http://localhost:9200を使用してElastic Searchに接続しようとしたとき、うまく機能しています。

しかし、私がcurl http://IpAddress:9200を実行するとき、それはconnection refused port 9200を言っているエラーを投げています。

このエラーを解決するには?

79
chinna2580

デフォルトでは全てのローカルアドレスにバインドするべきです。したがって、ファイアウォールに関するネットワーク層の問題がないと仮定すると、私が確認できるES設定はnetwork.bind_Hostであり、それが設定されていないか、0.0.0.0または::0、あるいはネットワークの正しいIPアドレスに設定されていることを確認してください。 。

更新:ES 2.3のコメントによると、代わりにnetwork.Hostを設定する必要があります。

70
Andrew White

/etc/elasticsearch/elasticsearch.ymlを編集して次の行を追加します。

network.Host:0.0.0.0

これはこのパラメータを「設定解除」し、他のIPからの接続を許可します。

68
Ramon

このページのすべてを試してみましたが、 here の指示だけが役に立ちました。

/etc/default/elasticsearchでは、これらがコメントアウトされていないことを確認してください。

START_DAEMON=true
ES_USER=elasticsearch
ES_GROUP=elasticsearch
LOG_DIR=/var/log/elasticsearch
DATA_DIR=/var/lib/elasticsearch
WORK_DIR=/tmp/elasticsearch
CONF_DIR=/etc/elasticsearch
CONF_FILE=/etc/elasticsearch/elasticsearch.yml
RESTART_ON_UPGRADE=true

/var/lib/elasticsearchがelasticsearchユーザーによって所有されていることを確認してください。

chown -R elasticsearch:elasticsearch /var/lib/elasticsearch/
24
dikirill

私の場合はelasticsearchが開始されました。しかしまだ持っていた

curl: (7) Failed to connect to localhost port 9200: Connection refused

次のコマンドは失敗しました

Sudo service elasticsearch restart

それを機能させるために、私は代わりに走らなければなりませんでした

Sudo systemctl restart elasticsearch

それからそれはすべてうまくいきました。

20
Kalanit

このコマンドラインから始めないでください。

$ Sudo service elasticsearch status

私はそれをして取得します:

"There is insufficient memory for the Java Runtime..."

それから私は/etc/elasticsearch/jvm.optionsファイルを編集しました:

...

################################################################

# Xms represents the initial size of total heap space
# Xmx represents the maximum size of total heap space

#-Xms2g
#-Xms2g

-Xms512m
-Xmx512m

################################################################

...

これは魅力のように働きました。

16

ここで提案されている解決策はどれも私にとってはうまくいきませんでしたが、結局それがうまくいったのはelasticsearch.ymlに以下を追加することでした

network:
  Host: 0.0.0.0
http:
  port: 9200

その後、サービスを再起動し、VM内と外部の両方からサービスをcurlにすることができます。奇妙な理由で、curl呼び出しのいくつかの異なる変種inside the VMを試す前に試す必要がありました。

curl localhost:9200
curl http://localhost:9200
curl 127.0.0.1:9200

注:Ubuntu 14.04でElasticsearch 5.5を使用しています

13
Kimberly W
OpenJDK 64-Bit Server VM warning: INFO: os::commit_memory(0x0000000085330000, 2060255232, 0) failed; error='Cannot allocate memory' (errno=12)

サーバーが起動していることを確認してください。私の仮想マシンが小さすぎるRAMを持っていてesが起動できなかったとき、私はこの問題を見ました。

Sudo systemctl status elasticsearch

esが実際に実行されているかどうかは上記のとおりです。

12
Jes Chergui

この問題では、私は使用しなければなりませんでした:Sudo /usr/share/elasticsearch/bin/elasticsearch start

ポート9200/9300(Sudo netstat -ntlp)で何かを取得できるようにするには

curl -XGET http://localhost:9200

7
DependencyHell

私は9200ポートでの接続を拒否する同じ問題を抱えていました。コマンドSudo service elasticsearch statusでelasticsearchサービスのステータスを確認します。エラーが発生していて、Javaに関連するものを読んでいる場合、おそらく問題はあなたのjvmメモリにあります。 /etc/elasticsearch/jvm.optionsで編集できます。 Amazon環境の1GB RAMメモリマシンの場合、私は自分の設定を次の場所に保持しました。

-Xms128m
-Xmx128m

それを設定し、elasticsearchサービスを再起動した後、それは魅力的に働きました。 NmapおよびUFW(ローカルファイアウォールを使用している場合)チェックも便利です。

3

elasticsearchフォルダの下のDockerfileを開き、"network.Host = 0.0.0.0""network.Host = 127.0"に更新します。 0.1 "。次にコンテナを再起動します。カールで接続を確認してください。

$ curl http://docker-machine-ip:9200
{
  "name" : "vI6Zq_D",
  "cluster_name" : "elasticsearch",
  "cluster_uuid" : "hhyB_Wa4QwSX6zZd1F894Q",
  "version" : {
    "number" : "5.2.0",
    "build_hash" : "24e05b9",
    "build_date" : "2017-01-24T19:52:35.800Z",
    "build_snapshot" : false,
    "lucene_version" : "6.4.0"
  },
  "tagline" : "You Know, for Search"
}
2
javasenior

elasticsearch.ymlを編集して、次の行を追加します

http.Host: 0.0.0.0

network.Host: 0.0.0.0は機能しませんでした

2
Mike

Network.bindを0.0.0.0に、http:portを9200に変更します。バインドアドレス0.0.0.0は、ローカルマシン上のすべてのIPv4アドレスを意味します。ホストに192.168.1.1と10.1.2.1という2つのIPアドレスがあり、そのホスト上で稼働しているサーバーが0.0.0.0で待機している場合、それらのIPの両方で到達可能です。

1
Siddu

この場合、まず最初に下記のコマンドを使用してJavaのバージョンを確認する必要があります。

Java -version

このコマンドを実行すると、次のようになります。

Javaバージョン "1.7.0_51" OpenJDKランタイム環境(rhel-2.4.5.5.el7-x86_64 u51-b31)OpenJDK 64ビットサーバーVM(ビルド24.51-b03、混合モード)

その後、このコマンドを使用します。

update-alternatives --config Java

以下のバージョンを選択してください

* + 1 /usr/lib/jvm/Java-1.7.0-openjdk-1.7.0.51-2.4.5.5.el7.x86_64/jre/bin/Java 2 /usr/Java/jdk1.8.0_73/jre/bin/ Java

現在の選択を維持するには[+]を入力するか、選択番号を入力します。2

curl -XGET http://127.0.0.1:9200
1
saurabh cse

私の2セント、

Digital Oceanのインストール手順に従ったところです。どうやらレポジトリで利用可能なパッケージは最新ではない、私はすべてを削除してElastic Searchから直接インストール手順を実行しました。 Kibanaで見つかったものと同じ問題/問題は、私にとっての解決策でもあり、すべてを削除してその手順に従うだけでした。これによって誰かが2時間節約できることを願っています

en

1
ximbal

SELinuxを無効にすることは私には役に立ちましたが、私はそれをお勧めしません - 私はPoCのためだけにそれをしました

0
Adhitya Ganesan

Elasticsearchのjdkを最新の最小バージョンに更新してください。

0
Zhu Xiaohu

私の問題は私はlocalhostのIPアドレスに設定する必要があるlocalhostで動作することができませんでしたでした

network.bind_Host: 127.0.0.1

0
Mahdi Younesi

私の場合は9200ポートがAmazonインスタンスであることを確認してください。そのため、セキュリティグループで開いたときにcurlコマンドが機能しました。

0
Buhiire Keneth

上記の答えのいくつかを利用した後、aptインストールの後に、完全な再起動が順番になっているかもしれないことを忘れないでください。

0
Altus

これを付け加えるために、私は、network.Hostをlocalhostに設定するというグーグルを通じて多くのドキュメントに出会いました。

そうすることは私に悪名高い接続を拒否しました。 FQDNではなく、IPアドレス(127.0.0.1)を使用する必要があります。

ジェフ

0
J.F.Gratton