私はAWSとElasticSearchの初心者で、実際にプロダクションでどのように使用できるかを理解するためにElasticSearchで遊んでいます。私はAWSに独自のElasticSearch製品があることを知っていますが、私は自分のEC2インスタンスをスピンアップし、ElasticSearchを自分で設定して詳細を知りたいと思っていました。EC2インスタンス上で実行されているElasticSearchサービスへのリクエストの送信
elastic.co's instructionsに従うことで、EC2インスタンスでElasticSearchを起動して実行しています。私は私のESサービスを開始し、curlコマンドを実行:
$ curl localhost:9200/_cluster/health?pretty
を私は戻って有効な応答を得た:
{
"cluster_name" : "elasticsearch",
"status" : "green",
"timed_out" : false,
"number_of_nodes" : 1,
"number_of_data_nodes" : 1,
"active_primary_shards" : 0,
"active_shards" : 0,
"relocating_shards" : 0,
"initializing_shards" : 0,
"unassigned_shards" : 0,
"delayed_unassigned_shards" : 0,
"number_of_pending_tasks" : 0,
"number_of_in_flight_fetch" : 0,
"task_max_waiting_in_queue_millis" : 0,
"active_shards_percent_as_number" : 100.0
}
しかし、私はリモートから同じ要求を送信しようとしてきた、とタイムアウトしています:私は私のEC2インスタンスを作成し
curl http://MY-EC2-INSTANCE-IP-ADDRESS:9200/_cluster/health?pretty
curl: (7) Failed to connect to XX.XX.XXX.XX port 9200: Operation timed out
が、私は私のセキュリティグループ内のHTTPオプションを指定してくださいました。以下のスクリーンショットを添付しました。
また、HTTPが実際に動作していることを確認しました。私はservice httpd start
を使用して独自小さなApacheサーバを起動し、/var/www/html
に小さなindex.html
ファイルを配置し、シンプルな
とこんにちは、これは弾性検索です。
テキストフィラー。私はAWS自身ElasticSearchサービスは、ポート番号のない(あるいは、して、ユーザーに直接エンドポイントを提供知っ
:私は私のEC2インスタンスのIPアドレスにアクセスすると、私は、レンダリングされた正しいindex.htmlのテキストを取得します少なくともデフォルトのポート番号)。しかし、リモートESサービス(ほとんどすべてがlocalhost:9200
を例にしています)にリクエストを送信する方法について、驚くほどごくわずかなドキュメントがあります。
EC2インスタンス上のElasticSearchサービスにリクエストを送信するための適切なプロトコルは何ですか?
あなたはいくつかのことを誤解していると思います。セキュリティグループはファイアウォールです。 ssh経由でインスタンスの中にいるときは、ファイアウォールの内側にあるので、 'localhost'上の任意のポートに自由にアクセスすることができます。セキュリティグループの設定には0の効果があります。セキュリティグループ外にいったん設定すると、ファイアウォールを通過する必要があります。実際には何が重要かは、ポート番号とTCPとUDPです。あなたのケースでは、ポート9200に「カスタムTCPルール」を追加する必要があります。「HTTP」はポート80でTCPを指定するためのショートカットであり、ポート9200でelasticsearchサーバーに到達する必要はありません。 HTTPプロトコル – zapl
ありがとうございます。これは非常に役に立ちます。あなたが先に進み、これを答えとして書くなら、彼は最も包括的かつ最良の説明としてそれを受け入れることができます。 –