2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Elastic Workplace SearchをWSL2で試す。

Last updated at Posted at 2020-09-16

はじめに

Elastic Enterprise Search(EWS)が7.9になってBASICライセンス(無料)での提供がはじまりました(ニュースリリース)。太っ腹。 実は7.8のときにDocker使って軽くお試ししていたのですが、基本機能はもうすぐ無料になるということで静かに待っていました。よーし試すぞー、と試したのでメモ書き。

Elastic Workplace Searchとは

Elastic Workplace Search(以下、EWS)は、Elastic社から「Elastic Enterprise Search」のサブ機能として提供されています。

EWSでは、OSSの全文検索エンジンelasticsearchのフロントエンド機能が提供されていて、いろいろなデータソースにある様々なドキュメントを気軽に検索できるようになるそうです。

↑本当は3つの機能があるぞ、の図(ホームページ)。

目次

  1. Ubuntu 20.4 on WSL2
  2. Elastic Workplace Search 構築

1. Ubuntu 20.4 on WSL2

最近、マイマシンのWindowsでWSL2(Windows Subsystem for Linux 2.0)をバージョンアップしたので、せっかくだからとWSL2上で試してみようとなりました。

■ WSL2のアップデート

WSLのインストールはマイクロソフトのページを参考に。WSL2へのアップデートはQiitaを参考にしました。

■ Ubuntu 20.4 インストール

省略しますが、アップデートしたりWSL1にインストールして大変だった。。
盛大に失敗したりしてるのでQiitaには大変助けられました。。感謝の意を込めてリンク。

ここからセットアップ。

(1) いつものプロキシ設定(/etc/apt/apt.conf.d/proxy.conf)

bash
$ sudo touch /etc/apt/apt.conf.d/proxy.conf
$ sudo vi /etc/apt/apt.conf.d/proxy.conf

以下の通り編集

/etc/apt/apt.conf.d/proxy.conf
Acquire::http::Proxy "http://<uid>:<pass>@<proxyhost>:<proxyport>";
Acquire::https::Proxy "http://<uid>:<pass>@<proxyhost>:<proxyport>";

更新先を日本に(jaistが好き)

bash
sudo sed -i.bak -e "s%http://us.archive.ubuntu.com/ubuntu/% \ 
                 http://ftp.jaist.ac.jp/pub/Linux/ubuntu/%g"  \
                 /etc/apt/sources.list

更新実行

$ sudo apt update
$ sudo apt upgrade -y

(2)もろもろ環境構築

日本語環境をお好みで。

bash
$ sudo apt install -y language-pack-ja
$ sudo update-locale LANG=ja_JP.UTF-8
$ sudo apt install -y manpages-ja manpages-ja-dev
$ sudo dpkg-reconfigure tzdata
$ sudo apt install -y nkf

curlは標準で入っている?

bash
$ sudo apt install -y curl

2.Elastic Workspace Search構築

(参考その1)Elastic - Download Enterprise Search
(参考その2)Elastic - Installing Workspace Search

①Prerequisitesインストール

bash
$ sudo apt install -y openjdk-11-jdk

②Elasticsearchを構築する。

Elasticsearchが検索エンジン本体ですね。

wget使うなら/etc/wgetrcを編集。

bash
$ sudo apt install -y wget
$ vi /etc/wgetrc

認証が必要な場合はいつもの形式。ポート番号の後に"/"がないとエラーになるみたい。use_proxyもonにしておく。

/etc/wgetrc
  :
# You can se
# You can set the default proxies for Wget to use for http, https, and ftp.
# They will override the value in the environment.
http_proxy = http://<uid>:<password>@<proxy_host>:<proxy_port>/
https_proxy = http://<uid>:<password>@<proxy_host>:<proxy_port>/

# If you do not want to use proxy at all, set this to off.
use_proxy = on
:

elasticsearchを取得しておく。DLしてゲット。
うまくいかない場合はブラウザでDLしてコピーしても良い。

bash
$ cd ~/
$ wget https://artifacts.elastic.co/downloads/\
       elasticsearch/elasticsearch-7.9.1-linux-x86_64.tar.gz
$ tar xvf elasticsearch-7.9.1-linux-x86_64.tar.gz
$ cd elasticsearch-7.9.1

②の2と3 elasticsearch.confを編集して起動

展開したフォルダにconfigフォルダがあるのでそこにある設定ファイルを編集する。

bash
$ vi ./config/elasticsearch.yml

以下を末尾に追加

config/elasticsearch.yml
xpack.security.enabled: true
xpack.security.authc.api_key.enabled: true
bash
$ ./bin/elasticsaerch

なんのエラーもなく動く(と思う)

②の4 password auto

②の2と3で起動したまま別の窓を開いて実行。

bash
$ cd ~/elasticsearch-7.9.1
$ sudo bin/elasticsearch-setup-passwords auto
  :
Changed password for user apm_system
PASSWORD apm_system = **********

Changed password for user kibana_system
PASSWORD kibana_system = **********

Changed password for user kibana
PASSWORD kibana = **********

Changed password for user logstash_system
PASSWORD logstash_system = **********

Changed password for user beats_system
PASSWORD beats_system = **********

Changed password for user remote_monitoring_user
PASSWORD remote_monitoring_user = **********

Changed password for user elastic
PASSWORD elastic = <ここのパスワードいる>

③Elastic Enterprise Searchを構築する

③の1. ダウンロードしてuncompressed

ダウンロードしろとあったのでdlしてuncompressed。

bash
$ cd ~/
$ wget https://artifacts.elastic.co/downloads/\
    enterprise-search/enterprise-search-7.9.1.tar.gz
$ tar xvf enterprise-search-7.9.1.tar.gz

③の2. config/enterprise-search.ymlを見つけて設定追加

bash
$ cd enterprise-search-7.9.1
$ vi ./config/enterprise-search.yml

elasticsearchの認証用に末尾に3行追加する。途中をコメントアウトしてもいい。
さらにelasticsearchクラスタのインデキシングができるように1行追加。プレミアライセンスある場合はいらないとか。

config/enterprise-search.yml
        :
ent_search.auth.source: standard
elasticsearch.username: elastic
elasticsearch.password: <さっき出力されたパスワード>
allow_es_settings_modification: true # クラスタOK

③の3. Workplaceの時はencryption_keysどうしても必要なのよ

ってことでencryption_keys。256bit がいいってあるのでhex 64桁。間違ってたらごめんなさい。
opensshで作成してもいいのかな?
(参考)https://www.elastic.co/guide/en/workplace-search/current/encryption-keys.html#encryption-keys
初期ファイルだとこんな感じ。

config/enterprise-search.yml
# ---------------------------------- Secrets ----------------------------------
#
# Encryption keys to protect your application secrets. This field is required.
#
secret_management.encryption_keys: []
#
bash
$ echo "secret_management.encryption_keys: [" \ 
  `openssl rand -hex 64`", "`openssl rand -hex 64`"]" >> config/enterprise-search.yml

3の④Enterprise Searchを起動

で、規定のパスワード設定しつつenterpriseの方を起動する。

bash
$ ENT_SEARCH_DEFAULT_PASSWORD=passwordexample  bin/enterprise-search

3の⑤アクセス確認

もいっこshell起動してcurlで確認

bash
$ curl -L http://localhost:3002/ 
<!DOCTYPE html5><head><title>Elastic Enterprise Search</title>
      <link rel="icon" type="image/png" href="http://localhost:3002/enterprise-search-favicon-196x196.png" sizes="196x196" />
:

いける。。Windows側のブラウザで確認だー!

OH。

追加設定1:Windows-Ubuntu(WSL2)間のポートフォワード

Windows側のポートを確認。

cmd.exe
$ netstat -a | findstr LISTEN

(出力は割愛)
Windows側は3002,9200,9300のどのポートもLISTENしていない。

(1) WSLのlocalhostForwarding設定を試す

WSL2 にはWSL2のlocalhost設定をする設定があるらしいので設定(以下を参考に実施)。

結果: NG

OH。Docker上に構築したときはできるのに。。。

(2) netsh.exeのportproxy設定で試す。

リバースプロキシも考えたけどこっちのほうが気軽そうなので。参考にしたのはこちら。sshだけれども。

Windowsのcmd.exdを起動して、Windowsにくる3002,9200,9300をportproxy。

cmd.exe
$ netsh.exe interface portproxy add v4tov4 listenaddress=0.0.0.0 listenport=3002 \
connectaddress=<Ubuntuのアドレス> connectport=3002
$ netsh.exe interface portproxy add v4tov4 listenaddress=0.0.0.0 listenport=9200 \
connectaddress=<Ubuntuのアドレス> connectport=9200
$ netsh.exe interface portproxy add v4tov4 listenaddress=0.0.0.0 listenport=9300 \
connectaddress=<Ubuntuのアドレス> connectport=9300
$ netsh.exe interface portproxy show v4tov4

結果: いけた

image.png

追加設定2:Elasticをdevelopmentモードで公開する。

せっかくなので外部からもアクセスできるようにしようということで、Elasticの方の設定も変更します。

Elasticsearch 公開ホスト、ポートを設定

外部に公開する場合はelasticsearch.ymlの"network.host"に設定するのですが、そうするとdeveploment mode からproduction modeになってしまい、シングルノードではだめだよ、とかhttps使ってよとか起動時にチェックが入って起動できません。

production modeではなく、development mode起動させるには、elasticsearch.ymlに次の項目を設定します。

bash
$ cd ~/elasticsearch-7.9.1
$ vi ./config/elasticsearch.yml
config/elasticsearch.yml
http.host: <Ubuntuのアドレス>
transport.host: <Ubuntuのアドレス>
discovery.type: single-node

また、合わせてenterprse-search.ymlのそれらしき設定を編集します。

bash
$ cd ~/enterprise-search-7.9.1
$ vi ./config/enterprise-search.yml
config/enterprise-search.yml
elasticsearch.host: http://<Ubuntuのアドレス>:9200
ent_search.external_url: http://<Ubuntuのアドレス>:3002
ent_search.listen_host: <Ubuntuのアドレス>
ent_search.listen_port: 3002

Windowsのブラウザで表示

localhostかWindowsのIPアドレスを使って3002にアクセスすると表示されます。

  • uid : enterprise_search
  • pwd : 起動時に指定したパスワード(ex. passwordexample)
できた。

おわりに。

WSL1に比べてできることが増えたWSL2。頑張って勉強しつつ活用してみます。
Elastic Workplace SearchのBASICライセンスでの公開は、実稼働の前に試す良いチャンス。
次は、EWSへのインデックス登録と使い勝手チェックでも書こうかな。

参考文献

商標など

  • Elasticsearchは米国および他の国々で登録されたElasticsearch B.V.の商標です。
  • Windowsは,米国Microsoft Corporationの米国およびその他の国における登録商標または商標です。
  • 記載の会社名、製品名、サービス名等はそれぞれの会社の商標または登録商標です。
2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?