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 をインストール
-
Elastic の Web サイトから Elasticsearch アーカイブをダウンロードします。
-
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 のヒープ サイズでは、最大句カウント値として 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 が起動に失敗し、ログにエラー メッセージ Elasticsearch が予期せず終了しました と表示される場合は、ヒープ サイズを増やしてください。 テスト中に、 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 間の通信をセキュリティで保護します。