Elasticsearch の Client API はHTTPプロキシを越えられない。
どうも!
社内向けのデモのため EC2 上に、elasticsearch を立てていたのですがその際に直面した課題と解決策を紹介したいと思います。
私のいる会社のネットワークは、セキュリティや監査を目的として、HTTP Proxy を経由してインターネットにつながります。よくある構成です。EC2 にももちろん proxy を経由して、接続するわけです。EC2 上に elasticsearch を立てて、自作の Java バッチを使って、データを入れようとしていたのですが、これがうまく接続ができないという現象が起きていました。このバッチは、Elasticsearch の Client API を使って書かれたものです。もちろん -Dhttp.proxyHost ・・・などプロキシは設定しています。:P
バッチを作った時のエントリは以下です。
Elasticsearch 用 インデックス作成処理を java で書いた。 - よしだのブログ
ES のドキュメントやパケットキャプチャを使って調べてみたところ、Elasticsearch の Client API は TCP を使って接続しているということがわかりました。つまり、HTTP Proxy とはネットワークレイヤーが異なるため、proxy の向こうにある ES には接続ができません!
というわけで、ナマの HTTP Client を利用して、データを送信するコードを書いてみました。以下、かなり雑ですがご参考まで。。
ElasticsearchRecordWriter.java (using JSON over HT ...
参考
高速スケーラブル検索エンジン ElasticSearch Server (アスキー書籍)
- 作者: Rafal Kuc (lにストローク符号、cにアクサン・テギュ付く),Marek Rogozinski (nにアクサン・テギュ付く)
- 出版社/メーカー: KADOKAWA / アスキー・メディアワークス
- 発売日: 2014/03/25
- メディア: Kindle版
- この商品を含むブログ (3件) を見る