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

Elasticsearchのトラブルシューティング:よくある問題

ElasticsearchとLiferayの設定中に発生する可能性がある問題点をリストアップしました。 追加の接続固有のエラーについては、 Elasticsearch 接続のトラブルシューティングで説明されています。

クラスター名

elasticsearch.ymlcluster.nameプロパティの値は、Liferay Elasticsearchコネクターで設定されたclusterNameプロパティと一致する必要があります。

トランスポート アドレス

Elasticsearchコネクター設定のtransportAddressesプロパティの値には、Elasticsearchノードが実行されている有効なホストとポートが少なくとも1つ含まれている必要があります。 Liferayを組み込みモードで実行していて、スタンドアロンのElasticsearchノードまたはクラスターを起動すると、ポート9300が占有されていることが検出され、ポート9301に切り替わります。 その後、LiferayのElasticsearchコネクターをリモートモードに設定すると、引き続きデフォルトのポート(9300)でElasticsearchを検索します。 クラスターのマスターノードとデータノードのアドレスがすべて記載されていることを確認してください。

Elasticsearch への接続 では、コネクタ構成オプションについて詳しく説明します。

ネットワークホストアドレス

Liferay 7.3 以降では、バンドルされている サイドカー Elasticsearch サーバーは、デフォルトでポート 9201 で実行されます。 これは、ElasticsearchのデフォルトのHTTPポート(9200)を使用してリモートのElasticsearchインストールのnetworkHostAddressを設定しても、競合が発生しないことを意味します。 トランスポートアドレスと同様に、クラスターのすべてのマスターノードとデータノードのアドレスがすべて記載されていることを確認してください。

クラスタースニッフィング(追加設定)

Elasticsearch クラスターは複数のノード タイプを持つことができます。 クラスター スニッフィングは、Elasticsearch コネクタでデフォルトで有効になっており、 transportAddresses プロパティで構成されているデータ ノードを検索します。 使用可能なものがない場合、コネクターはコンソールログにNoNodeAvailableExceptionをスローする可能性があります。 このエラーを回避し、クラスタースニッフィングを継続して使用するには、少なくとも1つのデータノードのトランスポートアドレスを設定してください。

クラスタースニッフィングを無効にするには、clientTransportSniff=false.configファイルに追加するか、[システム設定]の[クライアント・トランスポート・スニフ]プロパティの選択を解除します。

Docker接続の拒否

Liferay DXPコンテナは、接続を確立するためにElasticsearch IPを認識する必要があります。 以下のような因数を渡して、docker runフェーズでElasticsearchコンテナ名をElasticsearchサーバー ホストIPアドレスにマッピングする/etc/hosts/エントリーを追加します。

--add-host elasticsearch:[IP address]

実行中のすべてのコンテナのIPアドレスを取得するには、

docker network inspect bridge

設定ファイル名

LiferayをElasticsearchに接続する際に問題が発生した場合(LiferayログにNoNodeAvailableExceptionメッセージが表示されるなど)、最初に実行する手順の1つは、設定ファイルに適切な名前が付けられていることを確認することです。 認識できない設定ファイルは処理されず、結果としてさまざまなエラーが発生する可能性があります。

Elasticsearchの非推奨ログを無効にする

LiferayのElasticsearchコネクターで使用されるElasticsearch APIが廃止予定となる場合があります。 Liferayに必要な機能に影響がない場合でも、以下の警告ログメッセージが表示される可能性があります。

[2019-07-16T14:47:05,779][WARN ][o.e.d.c.j.Joda           ] [
ode_name]'y' year should be replaced with 'u'. Use 'y' for year-of-era. Prefix your date format with '8' to use the new specifier.
[2019-07-16T14:47:06,007][WARN ][o.e.d.c.s.Settings       ] [
ode_name][xpack.ssl.certificate] setting was deprecated in Elasticsearch and will be removed in a future release! See the breaking changes documentation for the next major version.
[2019-07-16T14:47:06,007][WARN ][o.e.d.c.s.Settings       ] [
ode_name][xpack.ssl.certificate_authorities] setting was deprecated in Elasticsearch and will be removed in a future release! See the breaking changes documentation for the next major version.
[2019-07-16T14:47:06,008][WARN ][o.e.d.c.s.Settings       ] [
ode_name][xpack.ssl.key] setting was deprecated in Elasticsearch and will be removed in a future release! See the breaking changes documentation for the next major version.
[2019-07-16T14:47:06,463][WARN ][o.e.d.x.c.s.SSLService   ] [
ode_name]SSL configuration [xpack.http.ssl] relies upon fallback to another configuration for [key configuration, trust configuration], which is deprecated.
[2019-07-16T14:47:06,464][WARN ][o.e.d.x.c.s.SSLService   ] [
ode_name]SSL configuration [xpack.security.transport.ssl.] relies upon fallback to another configuration for [key configuration, trust configuration], which is deprecated.
1. 07-16T14:47:05,779][WARN ][o.e.d.c.j.Joda           ] [

これらの警告は機能上の問題を示すものではないため、無効にすることができます (方法については、 非推奨ログ を参照してください)。

フィールドタイプエラー

Elasticsearch がインデックスの自動作成を許可され、完全な再インデックスが実行されると、まれに、インデックスの再作成に間に合うように Liferay マッピングが作成されないことがあります。 代わりにデフォルトの Elasticsearch マッピングが適用され、検索実行中にエラーが発生します。 この問題は、Liferay DXP 2024.Q2+/Portal GA120+ では、Elasticsearch での Liferay のインデックスの自動作成を自動的に無効にすることで解決されました。

org.elasticsearch.ElasticsearchStatusException: ElasticsearchStatusException[Elasticsearch exception [type=search_phase_execution_exception, reason=all shards failed]]; nested: ElasticsearchException[Elasticsearch exception [type=illegal_argument_exception, reason=Text fields are not optimised for operations that require per-document field data like aggregations and sorting, so these operations are disabled by default. Please use a keyword field instead. Alternatively, set fielddata=true on [entryClassPK] in order to load field data by uninverting the inverted index. Note that this can use significant memory.]]; nested: ElasticsearchException[Elasticsearch exception [type=illegal_argument_exception, reason=Text fields are not optimised for operations that require per-document field data like aggregations and sorting, so these operations are disabled by default. Please use a keyword field instead. Alternatively, set fielddata=true on [entryClassPK] in order to load field data by uninverting the inverted index. Note that this can use significant memory.]];

以前のバージョンでは、解決策は、Elasticsearch で liferay-* インデックスのインデックス自動作成を無効にすることです。 action.auto_create_index: "-liferay-*"elasticsearch.yml に設定するか、 Index APIに PUT リクエストを送信します。

フィールドまたは句が多すぎる

Elasticsearch 7 または 8.0 を使用している場合、まれに、 indices.query.bool.max_clause_count 設定 (デフォルトは 4096) を増やすことが必要になる場合があります。これは、 [*] のフィールド拡張で一致するフィールドが多すぎますクエリにネストされた句が多すぎます。maxClauseCount が 1024 に設定されていますなどのエラーを防ぐために必要です。 これを 1024 * [ヒープサイズ (GB)]に設定することを検討してください。 たとえば、Elasticsearch の 8GB のヒープ サイズでは、最大句カウント値として 8192を使用する必要があります。 この設定は Elasticsearch 8.1 以降では無効です。 最大句カウント値は動的に計算されます

リクエストエンティティが大きすぎます

Elasticsearch への一括リクエストが特定のサイズを超えると、 Request Entity Too Largeなどのエラーが発生し、リクエストが失敗します。

org.elasticsearch.ElasticsearchStatusException: ElasticsearchStatusException[Unable to parse response body]; nested: ResponseException[method [POST], host [http://search:9200], URI [/_bulk?refresh=true&timeout=1m], status line [HTTP/1.1 413 Request Entity Too Large]_];

これは、Liferay の再インデックス操作中に発生する可能性があります。 多くの場合、特定のモデル タイプが問題の根本原因であり、エンティティの バッチ サイズを減らす ことで問題を解決できます。 Elasticsearchの http.max_content_length 設定を増やすと、それ自身で問題が発生する可能性があるため、バッチ サイズを減らすことをお勧めします。