Elasticsearchのインストール
オンプレミスでElasticsearchをインストール、設定、起動する方法は次のとおりです。
プライマリデータストレージ(データベースによってバックアップされていないデータを保存)に使用されているElasticsearchインデックスがある場合は、 スナップショットとリストアのアプローチを使用して、そのデータを新しいElasticsearchクラスタに取り込むことができます。 Liferay独自の検索の調整インデックス(結果ランキングとSynyonyms用)は、Liferay DXP7.2と7.3のプライマリーストレージのインデックスです。
本番環境のようなインストールのための環境設定
ホストの追加
localhostまたはDockerコンテナを使用してテスト環境をセットアップする場合は、これをスキップできます。 ローカルマシンで本番環境のようにセットアップするには、LiferayとElasticsearchクラスターのホストを追加します。 お使いのオペレーティングシステムのpath/to/etc/hostsファイルに次の情報を追加します。
<your IP> es-node1
<your IP> es-node2
<your IP> es-node3
<your IP> dxp.liferay.com
ループバックアドレス127.0.0.1ではなく、システムの実際のIPアドレスを使用してください。
mmapの調整
Elasticsearchは、ほとんどのオペレーティングシステムのデフォルトよりも多くのmmapカウントを必要とします(インデックスを保持するディレクトリをメモリにマッピングするため)。 Linuxでは、rootユーザーとして、次のように実行します。
sysctl -w vm.max_map_count=262144
互換性ヘッダー
Elasticsearch 8 の場合、Liferay と Elasticsearch の間にファイアウォールまたはプロキシが存在する場合は、Liferay が各リクエストに設定する互換性 HTTP ヘッダーがネットワーク トラフィック内で許可され、保持されるようにしてください。 詳細については、 Elasticsearch のリクエスト REST API 互換性 を参照してください。
Elasticsearch をインストール
-
Elasticsearchのアーカイブは、 ElasticのWebサイトからダウンロードできます。
-
Elasticsearchを実行するローカルフォルダにアーカイブの内容を展開します。 このフォルダがElasticsearchホームです。
-
[Elasticsearch Home]/binフォルダで次のコマンドを実行して、必要なElasticsearchプラグインをインストールします。./elasticsearch-plugin install analysis-icu./elasticsearch-plugin install analysis-kuromoji./elasticsearch-plugin install analysis-smartcn./elasticsearch-plugin install analysis-stempel
Elasticsearchの設定
各Elasticsearchサーバは、[Elasticsearch Home]/config/elasticsearch.ymlファイルによって設定されます。
Elasticsearch 7 または 8.0 を使用している場合、まれに indices.query.bool.max_clause_count 設定 (デフォルトは 4096) を増やす必要がある場合があります。これは、 [*] のフィールド展開が一致しすぎるフィールド や クエリにネストされた句が多すぎる、などのエラーを防ぐためです。 maxClauseCount は 1024 に設定されています。 これを 1024 * [ヒープサイズ (GB)] に設定することを検討してください。 例えば、Elasticsearch の 8GB ヒープサイズでは、max clauses count の値を 8192 にする必要があります。 Elasticsearch 8.1以降では、この設定は無効です。 最大句数値は動的に計算されます。
シングルノードおよびマルチノードのElasticsearchクラスター構成の例を次に示します。
Elasticsearch サーバーとの通信の認証と暗号化については、 Elasticsearch のセキュリティ保護 を参照してください。
例:シングルノードの本番環境Elasticsearchクラスター
以下は、シングルノードクラスターのelasticsearch.yml構成です。
cluster.name: LiferayElasticsearchCluster
discovery.type: single-node
http.port: 9200
network.host: es-node1
node.name: es-node1
transport.port: 9300
# Add security settings below
xpack.security.enabled: false
# Uncomment for Liferay versions prior to DXP 2024.Q2/Portal GA120. This
# disables index auto-creation for indexes prefixed with 'liferay-'
# action.auto_create_index: "-liferay-*"
Liferay DXP 2024.Q2+/Portal GA120+ は、 liferay- で始まるインデックスと、定義済みの カスタム インデックス名プレフィックス で始まるインデックスの Elasticsearch でのインデックス自動作成を自動的に無効にします。
LiferayElasticsearchClusterと呼ばれるこのクラスターには、es-node1と呼ばれるノードが1つあります。
本番モードの設定用にホストを構成していない場合は、ホスト値として localhost を使用してください。 Elasticsearchは、HTTPとTransportの通信のためにループバックアドレスにバインドすることができます。 単一ノード検出に加えて、これはElasticsearchサーバーが 開発モードで実行されていることを意味します。
例:マルチノード本番環境Elasticsearchクラスター
以下は、3ノードクラスターのes-node3と呼ばれるノードのelasticsearch.ymlです。
cluster.name: LiferayElasticsearchCluster
# Example production mode settings - 3-node cluster
cluster.initial_master_nodes:
- es-node1
- es-node2
- es-node3
discovery.seed_hosts:
- es-node1:9300
- es-node2:9301
- es-node3:9302
http.port: 9202
network.host: es-node3
node.name: es-node3
transport.port: 9302
# Add security settings below
xpack.security.enabled: false
# With Liferay versions prior to DXP 2024.Q2/Portal GA120, uncomment to disable
# index auto-creation for indexes prefixed with 'liferay-'
# action.auto_create_index: "-liferay-*"
Liferay DXP 2024.Q2+/Portal GA120+ は、 liferay- で始まるインデックスと、定義済みの カスタム インデックス名プレフィックス で始まるインデックスの Elasticsearch でのインデックス自動作成を自動的に無効にします。
本番モードの設定用にホストを構成していない場合は、ホスト値として localhost を使用してください。 Elasticsearchは、HTTPとTransportの通信のためにループバックアドレスにバインドすることができます。 これは 開発モードと呼ばれます。
関連するElasticsearchドキュメント:
!!! important
Each Elasticsearch node's `elasticsearch.yml` file must use unique values for the following properties.
- `node.name`
- `http.port`
- `network.host`
- `transport.port`
### Enforce Bootstrap Checks for Single Server in Production Mode
Elasticsearch [bootstrap checks](https://www.elastic.co/guide/en/elasticsearch/reference/8.19/bootstrap-checks.html) inspect configurations on startup and logs warnings for missing or suspicious configurations. In production, you should configure bootstrap checks to halt startup on misconfiguration.
To enforce the bootstrap checks in a single-node cluster, add this property to the end of your node's `[Elasticsearch Home]/config/jvm.options` file:
```properties
-Des.enforce.bootstrap.checks=true
Elasticsearchの起動
binフォルダからElasticsearchを起動します。
./elasticsearch
Elasticsearch が起動に失敗し、ログに ERROR メッセージ Elasticsearch exited unexpectedly が表示される場合は、ヒープ サイズを増やしてください。 テスト中は、 config/jvm.options ファイルを開き、 -Xms4g および -Xmx4g の例の設定のコメントを解除できます。 本番環境では、そのファイルに記載されている手順に従って、これらのパラメータを適切に設定してください。
詳細については、 Elasticsearch のインストールに関するトラブルシューティング を参照してください。
Elasticが起動したら、ステータスメッセージに下記のようなトランスポートアドレスが記載されます。
[2019-04-01T16:55:50,127][INFO ][o.e.t.TransportService ] [HfkqdKv] publish_address {127.0.0.1:9300}, bound_addresses {[::1]:9300}, {127.0.0.1:9300}
Liferay 7.2を実行している場合は、TransportServiceステータスメッセージのpublish_addressアドレスをメモしてください。 このアドレスでElasticsearchに接続するようにLiferayサーバーを設定する必要があります。
Elasticsearch は Liferay からの接続 を受け付ける準備ができています。
本番環境で実行している場合は、 Liferay と Elasticsearch 間の通信を安全にしてください。