Elastic Workplace Searchの構築とデータ投入から検索
はじめに
Elastic Workplace Search(https://www.elastic.co/jp/workplace-search) は、GmailやSalesforce、Sharepointなどの様々なプラットフォームの情報を一元化し、一括で検索できる画面を用意しています。
また、Elastic社が提供するElastic Enterprise Search(https://www.elastic.co/jp/enterprise-search) の機能の一つとして提供されており、Elastic Cloud上だけでなくオンプレでも利用することができます。
今回は、オンプレでElastic Workplace Searchを以下の環境に構築し、Windows端末からGoogle Chromeでアクセスして検索までを実行します。
・CentOS Linux 7.8
・OpenJDK 11
Elastic Workplace Searchの構築
1. 媒体をダウンロード
今回は、Version 7.10.0 をダウンロードします。
・Elasticsearch
https://www.elastic.co/jp/downloads/elasticsearch
・Elastic Enterprise Search
https://www.elastic.co/jp/downloads/enterprise-search
2. 事前にjavaをインストールしておく
今回の環境はOpenJDK11を利用
[root@nvm005567 ~]# java -version
openjdk version "11.0.9" 2020-10-20 LTS
OpenJDK Runtime Environment 18.9 (build 11.0.9+11-LTS)
OpenJDK 64-Bit Server VM 18.9 (build 11.0.9+11-LTS, mixed mode, sharing)
3. 媒体をインストールします。
rpm -ivh elasticsearch-7.10.0-x86_64.rpm
rpm -ivh enterprise-search-7.10.0.rpm
4. セキュリティ設定(SSL)
Elastic Enterprise Searchのダウンロードページの②の2にElasticsearchの設定方法が記載されていますが、Basicライセンスの場合は、追加でCA(認証局)やkeyの設定が必要となります。
セキュリティの設定についての詳細は、Elastic社のブログ(https://www.elastic.co/jp/blog/configuring-ssl-tls-and-https-to-secure-elasticsearch-kibana-beats-and-logstash) などを参考にしてください。
おおよそ以下の対応が必要となります。
・ドメイン名を定義(/etc/hostsに追記)
・CAの生成
・サーバー証明書の生成
・CAおよびサーバー証明書の設定
5. ドメイン名を定義(/etc/hostsに追記)
今回は、ホスト名「nvm005567」を利用します。
[root@nvm005567 ~]# cat /etc/hosts | grep 10.197.193.6
10.197.193.6 nvm005567.localdomain nvm005567
6. CAの生成
elasticsearchのコマンドで生成します。
-- pass ・・・パスワードを設定。今回は空で設定。
/usr/share/elasticsearch/bin/elasticsearch-certutil ca --pem --pass "" --out elastic-stack-ca.zip
zipを解凍するとファイルの中身は以下になります。
Archive: /usr/share/elasticsearch/elastic-stack-ca.zip
creating: /usr/share/elasticsearch/ca/
inflating: /usr/share/elasticsearch/ca/ca.crt
inflating: /usr/share/elasticsearch/ca/ca.key
7. サーバー証明書の生成
elasticsearchのコマンドで生成します。
--ca-cert ・・・ CAの生成で作成したcrtを指定。/usr/share/elasticsearch/からの相対パス。
--ca-key ・・・ CAの生成で作成したkeyを指定。/usr/share/elasticsearch/からの相対パス。
--ca-pass ・・・CAの生成で設定したパスワードを設定
-- name ・・・ /etc/hostsに記載した名称を記載
/usr/share/elasticsearch/bin/elasticsearch-certutil cert --ca-cert ca/ca.crt --ca-key ca/ca.key --ca-pass "" --pem --name nvm005567 --out certificate-bundle.zip
zipを解凍するとファイルの中身は以下になります。
Archive: /usr/share/elasticsearch/certificate-bundle.zip
creating: /usr/share/elasticsearch/nvm005567/
inflating: /usr/share/elasticsearch/nvm005567/nvm005567.crt
inflating: /usr/share/elasticsearch/nvm005567/nvm005567.key
8. CAおよびサーバー証明書の配置
以下のように配置します。
※/etc/elasticsearch 配下以外に格納した場合は、elasticsearchの起動時に読み込めないことがあります。
[root@nvm005567 ~]# ll /etc/elasticsearch/certs/
合計 12
-rw-r--r-- 1 root elasticsearch 1200 11月 20 16:22 ca.crt
-rw-r--r-- 1 root elasticsearch 1147 11月 20 16:23 nvm005567.crt
-rw-r--r-- 1 root elasticsearch 1675 11月 20 16:23 nvm005567.key
9. CAおよびサーバー証明書の設定
以下のように/etc/elasticsearch/からの相対パスか絶対パスで記載します。
[root@nvm005567 ~]# cat /etc/elasticsearch/elasticsearch.yml | grep -v ^#
path.data: /var/lib/elasticsearch
path.logs: /var/log/elasticsearch
network.host: 0.0.0.0
discovery.seed_hosts: ["nvm005567"]
cluster.initial_master_nodes: ["nvm005567"]
xpack.security.enabled: true
xpack.security.authc.api_key.enabled: true
xpack.security.transport.ssl.enabled: true
xpack.security.http.ssl.enabled: true
xpack.security.http.ssl.key: certs/nvm005567.key
xpack.security.http.ssl.certificate: certs/nvm005567.crt
xpack.security.http.ssl.certificate_authorities: certs/ca.crt
10. Elasticsearchの起動
systemctl start elasticsearch
11. 初期パスワードの設定
セキュリティ設定(SSL)を有効にしたため、-uオプションを追加して、以下のどちらかで初期パスワードを設定します。今回は、自動設定を実行します。
・手動設定
/usr/share/elasticsearch/bin/elasticsearch-setup-passwords interactive -v -u "https://nvm005567:9200"
・自動設定(ランダムなパスワードが設定され、実行結果にパスワードが表示されます)
/usr/share/elasticsearch/bin/elasticsearch-setup-passwords auto -u "https://nvm005567:9200"
・自動設定で実行した場合の実行結果抜粋(elasticのパスワードを使用します)
16:14:46.372 [main] DEPRECATION org.elasticsearch.deprecation.xpack.core.ssl.SSLService - invalid SSL configuration for xpack.security.transport.ssl - server ssl configuration requires a key and certificate, but these have not been configured; you must set either [xpack.security.transport.ssl.keystore.path], or both [xpack.security.transport.ssl.key] and [xpack.security.transport.ssl.certificate]
Changed password for user elastic
PASSWORD elastic = Ic2ThE21Hr7tcZzZQ9aK
12. 疎通確認
curlコマンドを実行し、応答が返ってくることを確認します。
curl https://nvm005567:9200 --cacert /etc/elasticsearch/certs/ca.crt -u elastic:Ic2ThE21Hr7tcZzZQ9aK
コマンドの実行例
[root@nvm005567 ~]# curl https://nvm005567:9200 --cacert /etc/elasticsearch/certs/ca.crt -u elastic:Ic2ThE21Hr7tcZzZQ9aK
{
"name" : "nvm005567",
"cluster_name" : "elasticsearch",
"cluster_uuid" : "uCH7PdMeQ3aqwedCrHYEDQ",
"version" : {
"number" : "7.10.0",
"build_flavor" : "default",
"build_type" : "rpm",
"build_hash" : "51e9d6f22758d0374a0f3f5c6e8f3a7997850f96",
"build_date" : "2020-11-09T21:30:33.964949Z",
"build_snapshot" : false,
"lucene_version" : "8.7.0",
"minimum_wire_compatibility_version" : "6.8.0",
"minimum_index_compatibility_version" : "6.0.0-beta1"
},
"tagline" : "You Know, for Search"
}
[root@nvm005567 ~]#
13. 暗号化キーの作成
Elastic Enterprise Searchの設定で必要となる暗号化キーを作成します。
今回はopensslのコマンドを使って作成します。実行した結果を保存しておく。
※256-bitが推奨(https://www.elastic.co/guide/en/workplace-search/current/encryption-keys.html) されているため、今回は32バイトを引数で指定します。
[root@nvm005567 ~]# openssl rand -hex 32
e36bb0afb2796c4b693f59524b6a2cb68c4ff2aaf314ae41d2ac89e3f36fb1fe
14. CAおよびサーバー証明書の格納
/etc/elasticsearch/certsのファイルをコピーして、/usr/share/enterprise-search/config/certsの配下に格納します。
[root@nvm005567 ~]# ll /usr/share/enterprise-search/config/certs/
合計 12
-rw-r--r-- 1 enterprise-search enterprise-search 1200 11月 25 16:46 ca.crt
-rw-r--r-- 1 enterprise-search enterprise-search 1147 11月 25 16:46 nvm005567.crt
-rw-r--r-- 1 enterprise-search enterprise-search 1675 11月 25 16:46 nvm005567.key
15. Elastic Enterprise Searchの設定
以下のように設定します。
secret_management.encryption_keys ・・・ 保存しておいた暗号化キーを記載します。
elasticsearch.password ・・・ elasticユーザーのパスワードを記載します。
ent_search.external_url ・・・ 公開用のURLを設定します。設定してない場合は、「http://10.197.193.6:3002 」にアクセスすると、「http://localhost:3002 」のアドレスがリダイレクトされました。
[root@nvm005567 ~]# cat /usr/share/enterprise-search/config/enterprise-search.yml | grep -v ^#
log_directory: /var/log/enterprise-search
filebeat_log_directory: /var/log/enterprise-search
secret_management.encryption_keys: [e36bb0afb2796c4b693f59524b6a2cb68c4ff2aaf314ae41d2ac89e3f36fb1fe]
allow_es_settings_modification: true
elasticsearch.host: https://nvm005567:9200
elasticsearch.username: elastic
elasticsearch.password: Ic2ThE21Hr7tcZzZQ9aK
elasticsearch.ssl.enabled: true
elasticsearch.ssl.certificate_authority: /usr/share/enterprise-search/config/certs/ca.crt
elasticsearch.ssl.certificate: /usr/share/enterprise-search/config/certs/nvm005567.crt
elasticsearch.ssl.key: /usr/share/enterprise-search/config/certs/nvm005567.key
ent_search.auth.nvm005567.source: elasticsearch-native
ent_search.listen_host: 0.0.0.0
ent_search.external_url: http://10.197.193.6:3002
[root@nvm005567 ~]#
16. Elastic Enterprise Searchの起動
systemctl start enterprise-search
Elastic Workplace Searchのデータ投入から検索
1. Elastic Enterprise Searchへの接続
Elastic Enterprise Searchへの接続は、「ent_search.external_url」に設定したアドレスにアクセスします。
http://10.197.193.6:3002
2. Elastic Enterprise Searchのログイン
Elasticユーザーのアカウントでログインします。
3. Elastic Workplace Searchの選択
Elastic Workplace Searchの画面を選択します。
4. データソースの追加
「Add sources」を選択します。
5. カスタムAPIソースを選択
社内からクラウド系には簡単に接続できないため、Custom API Sourceを利用します。
6. データソースの作成
ソース名を入力して、作成します。今回は「test」と入力します。
7. アクセストークンおよびキーをコピー
[Access token]および[key]の値をコピーします。今回の値は以下のようになります。
[key] ・・・ 5fbe41ba9f98f01c7eeab771
[Access token] ・・・ 99f2a2107e807f42596854a966193eb3189a35f65755b8333004276788761bb2
8. データの投入
Linux上で以下のコマンドを入力して、データを投入します。
curl -X POST http://10.197.193.6:3002/api/ws/v1/sources/5fbe41ba9f98f01c7eeab771/documents/bulk_create \
-H "Authorization: Bearer 99f2a2107e807f42596854a966193eb3189a35f65755b8333004276788761bb2" \
-H "Content-Type: application/json" \
-d '[
{
"id" : 0001,
"title" : "冷蔵庫",
"body" : "デジタルカタログ",
"url" : "https://kadenfan.hitachi.co.jp/catalog/rei/book/index.html",
"created_at": "2020-12-07T01:00:00+00:00",
"type": "キッチン家電",
"extension": "URL",
"company": "Hitachi"
},
{
"id" : 0002,
"title" : "冷蔵庫",
"body" : "カタログ",
"url" : "https://kadenfan.hitachi.co.jp/catalog/pdf/refrigerator_201812.pdf",
"created_at": "2020-12-07T02:00:00+00:00",
"type": "キッチン家電",
"extension": "PDF",
"company": "Hitachi"
},
{
"id" : 0003,
"title" : "洗濯機",
"body" : "デジタルカタログ",
"url" : "https://kadenfan.hitachi.co.jp/catalog/wash/book/index.html",
"created_at": "2020-12-07T03:00:00+00:00",
"type": "生活家電",
"extension": "URL",
"company": "Hitachi"
}
]'
9. 検索アプリケーション
[Go to search application]をクリックします。
10. 検索
たとえば、家電と入力して、検索することができます。
デフォルトだと画面が寂しいので、少しカスタマイズしたいと思います。
11. 検索画面のカスタマイズ
[Display Settings]をクリックします。
12. 検索一覧のカスタマイズ
色や、表示するフィールドをPreview画面を見ながら変更できます。
13. 検索結果の詳細画面のカスタマイズ
[Result Detail]を選択し、表示するフィールドをPreview画面を見ながら追加できます。
14. カスタマイズ後の検索
詳細画面にフィールド名が追加されました。
また、[View on test]をクリックすることで、URL先に飛ぶことができます。
15. 検索の絞り込み
データソースや、[TYPE]を選択することで、検索結果をより絞り込むことができます。
おわりに
以上で見てきたように、Elastic Workplace Searchは簡単に構築、ドキュメント検索が行えるものとなっています。少しでも参考になれば幸いです。
Author And Source
この問題について(Elastic Workplace Searchの構築とデータ投入から検索), 我々は、より多くの情報をここで見つけました https://qiita.com/tmatsushita/items/b14333ab0de729ec2fa7著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .