Elasticsearch
ご覧のページは、お客様の利便性のために一部機械翻訳されています。また、ドキュメントは頻繁に更新が加えられており、翻訳は未完成の部分が含まれることをご了承ください。最新情報は都度公開されておりますため、必ず英語版をご参照ください。翻訳に問題がある場合は、 こちら までご連絡ください。

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 をインストール

  1. Elasticsearchのアーカイブは、 ElasticのWebサイトからダウンロードできます。

    重要

    お使いの Liferay バージョン と互換性のある最新の Elasticsearch アーカイブ をダウンロードしてください。

  2. Elasticsearchを実行するローカルフォルダにアーカイブの内容を展開します。 このフォルダがElasticsearchホームです。

  3. [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 間の通信を安全にしてください