2

私のscalaプロジェクトでelastic4sを使用して、ElasticSearchと通信しています。開発のためにローカルノードを開始しましたが、すべて正常に動作しています。本番環境では、Amazon Elasticsearch Service を使用したいと考えています。そのサービスを構成し、ec2 インスタンスの IP 経由でアクセスできるようにしました。ec2 に ssh 接続して以下を実行することで、動作することを確認できます。

curl search-blabla-blabla.us-east-1.es.amazonaws.com/_cluster/health

しかし、elastic4s をその ES インスタンスに接続するのに問題があります。私はしようとしています:

ElasticClient.remote("search-blabla-blabla.us-east-1.es.amazonaws.com", 9300)

その結果:

org.elasticsearch.client.transport.NoNodeAvailableException: None of the configured nodes are available: []

ドキュメントを読むと、elastic4s は TCP 経由でのみ接続でき [ 1 ]、Amazon Elasticsearch Service は TCP をサポートしていないようです [ 2 ]:サービスはポート 80 で HTTP をサポートしていますが、TCP トランスポートはサポートしていません。

Elastic4s と Amazon ES が実際に連携しないことを誰かが確認できますか? それは、すべての ES コードを書き直さなければならないことを意味するからです。

4

1 に答える 1

2

Amazon の Elasticsearch サービスは TCP をサポートしておらず、HTTP プロトコルのみをサポートしています。Elastic4s は、Elasticsearch Java API と同様に TCP のみを使用します (Elastic4s は Java クライアントのラッパーです)。

HTTP を使用する場合は、手動でクエリを記述して通常の HTTP クライアントを使用するか、HTTP プロトコルをサポートする Elasticsearch クライアントを使用する必要があります。

アップデート:

バージョン 5.2 の時点で、elastic4s は HTTP と TCP をサポートしています。これは現在実験段階です。https://github.com/sksamuel/elastic4s#quick-start

于 2015-11-12T10:34:50.937 に答える