eckctl

ElasticsearchをKubernetes上で便利に使えるものとして、Elastic Cloud on Kubernetes(ECK)があるけど、ローカル環境でも手軽にKubernetesクラスタを作って、そこでECKを動かせるようにしたいな、ということで、eckctlにまとめてみました。

手軽にKubernetesクラスタも作る必要があるので、eckctlではデフォルトでkindを利用することにしてます。なので、

$ ./eckctl create

とすると、ローカル環境にKubernetesクラスタができて、そこにECKを入れて、Elasticsearchクラスタができます。

サービス経由でアクセスするか、ポートフォワーディングで、

$ ./eckctl proxy

をして、別ターミナルで

$ ./eckctl curl https://localhost:9200/

みたいにするとElasticsearchのクラスタにアクセスできます。ECKのElasticsearchにはパスワードがかかっているので、eckctl経由にすることで、パスワードを付加してアクセスしています。

あとは、使い終わったら

$ ./eckctl delete

すれば、きれいに削除することができます。

使いながら、もう少し便利にしていこうかとは思いますが(ドキュメントを含めて…)、別にkindに依存しているわけではないので、そのうち、AWSやGCPにもデプロイできるようにしたいなとも思いますが、そこまで時間がないような気も…。とりあえず、FessのK8s対応が保留になっているので、eckctlベースに対応を進められないかなと考えています。

Docker Compose for Elasticsearch

ElasticsearchやKibanaをある程度はきちんとした状態で、手軽に試したいときがあるのだけど、そういうときにはdocker-fessを使っていた。でも、別にFessを使う必要はないし、プラグインとかも調整したいなということで、docker-elasticsearchにまとめてみた。

Elasticsearchだけを起動してみたいときには

$ docker-compose -f docker-compose.yml up

とすれば、localhost:9200でアクセスできるし、Kibanaも一緒に使いたいなー、というときには

$ docker-compose -f docker-compose.yml -f docker-compose.kibana.yml up

とすれば、localhost:5601でKibanaを使えるようになる。

プラグインとかをインストールしておきたいときには

$ ./bin/elasticsearch-plugin install analysis-kuromoji

とすれば、起動したElasticsearchで使えるはず。

今後も必要に応じて、微調整していく気はするけど、これで必要なときにコマンド1つで起動できるから便利になるかな…。

Workplace Searchの検索を試す

前回、インストールしたものの、クロール対象を用意しないとクロールできなかったので、今回はクロール対象の中で、簡単に準備できそうなDropboxをクロール対象にして試してみた。

DropboxのOAuthの設定が必要だが、手順自体はここにあるので、そこでApp KeyとApp Secretが生成できるので、それをWorkplace SearchのDropboxの接続情報に入れてConnectするとこんな感じで、取得したドキュメント件数が表示される。

今回は、Fessで使っているテスト用ファイルがfess-testdataにあるので、そこのファイルたちをDropboxに置いておいた。

とりあえず、今回は63ファイルがインデックスされたようなので、検索してみる。Go to Search Applicationで検索画面が表示される。

テスト用のファイルには「Lorem ipsum. (ロレム・イプサム) 吾輩は猫である。」という文字列があるので、試しに猫で検索してみると、こんな感じになる。

テキスト、HTML、MS Office、PDFあたりが検索できるようだ。ただ、Fessのテストデータにはいろんな種類のファイルが含まれているのですが、XMLファイルやzipに含まれるファイルなどはヒットしていなかった。あとは、仕方がない感はあるけど、Docuworks、AutoCAD,一太郎はヒットしていない。

検索結果をクリックすると、右側に情報が出てきた。それをさらにクリックすると対象のファイルに飛んでいく感じ。今回であれば、Dropboxのサイトに移動する。

絞り込みやソートについては、時間で絞り込み、関連度順と日付順のソートがある感じだった。

という感じで、今どきのUIだなという感じの印象でした。最近、Fessも今どきのUIが必要だなとは考えていたので、考えないとなと…。