ElasticのWorkplace Searchを触ってみる - その2 - インストールと起動

Posted by johtani on Thursday, May 7, 2020

目次

前回はWorkplace Searchの概要について書きましたが、今回はインストールと構成要素について説明します。なお、2020/5/7時点での情報を元に本記事は書いていますのでご注意ください。基本的にはインストールと起動方法についての手順を元に書いています。所々に考察を挟んだ形の記事になっていますので、気になるところだけ呼んでいただければと。

記事一覧

インストール

インストール方法は公式リファレンスもしくはダウンロードページに記載があります。 現時点ではMacもしくはLinuxが対象でWindowsはまだサポート対象外となっています。

必要なもの

インストールに必要なものは以下になります。

今回はローカルにElasticsearchの7.6.2をインストールしてから試してみます。30日間のトライアルライセンスが有効になっているので、Platinumの機能を試すことができます。

Javaの8か11が必要になります。Elasticsearchには7.xからJDKが同梱されるようになりましたが、Workplace SearchがJettyを元に動作しているからです(enterprise-search-7.6.0.tar.gzにjettyというフォルダあり)。

インストール手順

大まかには以下の3つです。

  1. Java 8もしくは11のインストール
    • 14でも大丈夫でした(ローカルにはSDKMANでインストールした14.0.1が利用された)。
  2. Elasticsearchのインストール(Elastic Cloudの場合はクラスタの起動)
    • 今回はローカルにインストール
  3. Workplace Searchのインストール

Javaはもともとインストールされていたので、今回は2と3をインストールしました。どちらもローカルで起動するので、2つをダウンロードしてtar.gzファイルを展開するだけになります。

起動方法と設定

起動方法に起動前の設定の手順も記載があります。 設定しながら起動していきます。

Elasticsearchの起動

既存のElasticsearchのクラスターがあり、Platinumのライセンスが有効になっている場合はこの手順は必要ありません。

  1. Elasticsearchの設定ファイルでSecurity機能をオンに
  2. Elasticsearchを起動
    • まずは起動(パスワードなどを設定するために必要)
  3. Elasticsearchのパスワードの設定
    • Elasticsearchでデフォルトで用意されているユーザーのパスワードを設定してします。手順では自動で生成させる方法ですが、独自に設定することも可能です。

Workplace Searchの起動

Elasticsearchが起動したらWorkplace Searchの設定をして起動します。

  1. Esへの接続設定をconfig/enterprise-search.ymlに指定
    • Esのパスワード設定時に生成されたelasticというユーザーのパスワードをここで指定。
    • yamlファイルに記載があるが、${ELASTICSEARCH_PASSWORD:changeme}という記述をした場合に環境変数を読み込める
  2. allow_es_settings_modification: trueconfig/enterprise-search.yml
    • ここに記載があるような変更をWorkplace SearchがEsのクラスターに対して実行する模様。Workplace Search以外でも使用しているElasticsearchクラスターの場合はallow_es_settings_modificationを有効にする代わりに、リンク先にあるような設定を自分で追加する。
  3. secret_management.encryption_keysを複数設定
    • Encryption Keysのガイドに少し詳しい説明がある。
    • opensslコマンドとかで作ればいいかな??
    • 1.と同じような設定をしようとしたがうまくいかなかったので、ファイルにキーを設定する方式にしました(バグ?)
  4. 起動するときにデフォルトユーザーパスワードを指定
    • 指定しなければ勝手に生成してコンソールに出力してくれるので、そちらの方がいいかと。
    • 今回は手順通りに指定した。
  5. 起動確認のためhttp://localhost:3002にアクセス

起動するとログが流れ、問題がなければ次のようにデフォルトユーザーの情報が出力されます。

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

*** Default user credentials have been setup. These are only printed once, so please ensure they are recorded. ***
      username: enterprise_search
      password: pas...ple

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

そして無事起動に成功したことも出力されます。

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

Success! Elastic Workplace Search is starting successfully.

In a few moments, you'll be able to login at the following address:

* URL: http://localhost:3002
  * If this is your first time starting Workplace Search, check the console output above for your user authentication credentials.
  * Visit the documentation: https://swiftype.com/documentation/enterprise-search

Secret session key has been generated.

Set the key in your config file to persist user sessions through process restarts:

secret_session_key: c23...3


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

ブラウザで画面にアクセスすると、次のような画面が表示されました。

起動時のエラー

いくつかのパターンも試してどんなエラーが出るのかを見てみました。 おまけですね。

Elasticsearchが見つからないエラー

Esを起動しないでWorkplace Searchを起動してみました。

200秒間アクセスしようと試みて駄目だったらエラーで終了みたいです。


[2020-05-07T03:48:33.645+00:00][13709][2002][app-server][INFO]: Failed to connect to Elasticsearch backend. Make sure it is running.
...
[2020-05-07T03:51:54.038+00:00][13709][2002][app-server][INFO]: Could not connect to Elasticsearch backend after 200s. Terminating...
[2020-05-07T03:51:54.039+00:00][13709][2002][app-server][ERROR]: 
--------------------------------------------------------------------------------

Error: Workplace Search is unable to connect to Elasticsearch. Ensure a healthy Elasticsearch cluster is running at http://127.0.0.1:9200 for user elastic.

--------------------------------------------------------------------------------

ElasticsearchのSecurityがオフのときのエラー

ちなみにSecurityをオフにしたままWorkplace Searchを起動した場合は以下のようなエラーが出ました。

[2020-05-07T03:46:53.474+00:00][13567][2002][app-server][ERROR]: 
--------------------------------------------------------------------------------

Elastic Workplace Search requires Elasticsearch security features to be enabled.
Please enable Elasticsearch security features as outlined here:
  https://www.elastic.co/guide/en/workplace-search/current/workplace-search-install.html

--------------------------------------------------------------------------------

構成要素

ここまでインストールして起動してきました。 では、Workplace Searchがどういったコンポーネントから構成されているかを予測してみましょう(あくまで外から見た予想となります。そのうちElastic社のウェビナーとかイベントで内部の発表とかあるかも?)。

インストールページの記載から

インストールページに最小ハードウェアという記載があり、そこで何が動く可能性があるかというのがわかります。

起動するものはこんな感じみたいです。

  • Elasticsearch - 外部でもOK
  • App Server - Workplace SearchのWeb機能
  • Worker - クローラーとかかな?
  • Filebeat - Workplace Searchのログ収集用
  • その他プロセス - なんだろ?

という具合です。

設定などからの予想

次は設定項目や起動時のログなどからの予想です。

  • Worklpace Search配下のセキュアなデータストア - アクセストークンなどの管理のため
  • JRubyアプリケーション - App ServerはJRuby上で動いているRailsアプリ
  • Filebeatも起動している - Workplace Searchのログ収集のため?
    • Filebeatの接続設定はWorkplace Searchの設定値を利用

では構成要素は?

ということで、現時点でわかった構成要素は以下のとおりです。

  1. Elasticsearch
  2. Workplace Search App Server - Railsアプリ on JRuby
    • Webアプリとは別に(内部?で)、いくつかのワーカーが存在する
    • 管理画面と検索画面の2種類が存在
  3. Filebeat - ログ収集

といった感じです。 まだ起動したばかりなのでこのくらいでしょうか。ログを見るともう少しわかりそうな気がします。

基本的には、EsをバックエンドにしたRailsのミドルウェアになります。コネクターや検索画面はすべてWorkplace Searchのミドルウェア経由でアクセスする形になりますので、普通に検索で利用するユーザーにはElasticsearchの存在は見えない作りになっています。

次は?

Getting Startedを元に、どんなアクターがいて、どんな機能が提供されているのか、どんな利用方法なのか?というのを見ていこうと思います。


comments powered by Disqus