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

Liferay Elasticsearchコネクターの詳細設定

Elasticsearch 接続 は、 構成ファイルまたはシステム設定を使用して構成されます。

Elasticsearch コネクタにはすぐに使用できる構成オプションが多数用意されており、ほとんどの Elasticsearch 設定は、同様または同一の名前の Liferay 設定 (例: httpSSLEnabled) によって構成できます。 専用の Liferay 設定なしで Elasticsearch 設定が必要な場合は、 詳細設定を使用して必要な設定オプションを追加します。 これらは、Elasticsearch の設定とマッピングを追加または上書きするために最もよく使用されます。

Elasticsearchで設定可能なものは、Elasticsearchコネクターを使って設定することができます。

Liferay Elasticsearchコネクターへの設定とマッピングの追加

利用可能な設定オプションは、簡単に設定できる一般的なものと、YAMLやJSONの入力が必要な複雑な設定の2つのグループに分かれていると考えてください。

システム設定で現在用意されている設定に、Elasticsearchの設定を追加することができます。

インデックス構成の追加

再インデックスが必要です

additionalIndexConfigurations 構成は、作成時に各 会社インデックス (つまり、各 Liferay 仮想インスタンスのインデックス)に適用される追加設定(JSON または YAML)を定義します。 たとえば、この設定を使って、カスタムのアナライザーやフィルターを作成することができます。 利用可能な設定の完全なリストについては、 Elasticsearch リファレンスを参照してください。

以下は、フィールドまたは動的テンプレートに適用できる 分析 を構成する方法を示した例です (動的テンプレートへの適用例については、以下の を参照してください)。

{
    "analysis": {
        "analyzer": {
            "kuromoji_liferay_custom": {
                "filter": [
                    "cjk_width",
                    "kuromoji_baseform",
                    "pos_filter"
                ],
                "tokenizer": "kuromoji_tokenizer"
            }
        },
        "filter": {
            "pos_filter": {
                "type": "kuromoji_part_of_speech"
            }
        }
    }
}
警告

一部のインデックス設定には、 Elasticsearch コネクタで専用のプロパティが指定されています。 専用設定と additionalIndexConfigurationsの両方で同じプロパティを設定しないでください。

タイプマッピングの追加

再インデックスが必要です

additionalTypeMappings は、各 会社およびシステムインデックス (つまり、各 Liferay 仮想インスタンスのインデックス)にデータをインデックスするための追加のマッピングを定義します。 これらは、インデックスの作成時に適用されます。 JSONの構文を使ってマッピングを追加します。 詳細については、 こちら および こちらを参照してください。 新しいフィールド(プロパティ)のマッピングや新しいダイナミックテンプレートには additionalTypeMappings を使用し、既存のマッピングを上書きしないようにしてください。 ここで設定したマッピングが既存のマッピングと重なる場合は、インデックス作成に失敗します。 デフォルトのマッピングを置き換えるには、 overrideTypeMappings を使用します。

ダイナミックテンプレートと同様に、Liferayのタイプマッピングにサブフィールドマッピングを追加することができます。 これらは Elasticsearch では プロパティ と呼ばれます。

プロパティを追加するには、次のJSON構文を使用します。

{
     "properties": {
         "fooName": {
             "type": "keyword"
         }
     }
}
重要
  • Liferay 7.4 U80+ 以降では、JSON ファイルの先頭に LiferayDocumentType 宣言を含めないでください。
  • Liferay DXP 2024.Q4+/Portal GA129+ 以降、Liferay は 保存フィールドをクエリしなくなり、デフォルトのマッピングでは使用されません。 これはパフォーマンス上の理由で変更されたため、可能な場合は追加のマッピングで保存されたフィールドを使用しないようにする必要があります。

追加のマッピングが Liferay マッピングに追加されたことを確認するには、追加内容を保存してインデックスを再作成した後、 curl を使用してこの URL にアクセスします。

curl http://[HOST]:[ES_PORT]/liferay-[COMPANY_ID]/_mapping?pretty

以下は、 localhost:9200で動作するElasticsearchインスタンスで、Liferayの企業IDが 20116の場合の例です。

curl http://localhost:9200/liferay-20116/_mapping?pretty

上記のURLでは、 liferay-20116 がインデックス名です。 これを含めると、その名前のインデックスを作成するために使用されたマッピングを確認したいことになります。

Elasticsearch のフィールド データ型の詳細については、 こちら を参照してください。

上の例では、Liferayのタイプマッピングに、 fooName フィールドを追加する方法を示しています。 fooName はマッピングの既存のプロパティではないため、正常に機能します。 既存のプロパティマッピングを上書きしようとすると、インデックス作成に失敗します。 代わりに、 overrideTypeMappings の設定を使用して、マッピングの プロパティ をオーバーライドします。

型マッピングのオーバーライド

再インデックスが必要です

Liferay のデフォルトのタイプマッピングを上書きし、データが 会社インデックスとシステムインデックスにインデックスされる方法を制御できるようにするには、 overrideTypeMappings を使用します。 これは高度な機能であり、厳密に必要な場合にのみ使用する必要があります。 各アップグレード中に、デフォルトのマッピングの変更を記録し、それがオーバーライド マッピングに影響するかどうかを考慮する必要があります。 たとえば、Liferay DXP 2024.Q4では、保存されたフィールドの使用はデフォルトのマッピングから削除されました。 オーバーライド マッピングを使用する必要がある場合、デフォルトのマッピングは完全に無視されるため、変更するセグメントだけでなく、マッピング定義全体をこのプロパティに含める必要があります。

変更を行うには、 コントロール パネル構成検索フィールド マッピングに移動して、インデックスで現在使用されているマッピングのリスト全体を見つけます。

内容全体を overrideTypeMappings プロパティの値としてコピーします (システム設定または OSGi 構成ファイルのいずれかに)。 冒頭の中括弧 {は残しますが、2行目と3行目は完全に削除します(インデックス名を書いた行と マッピングを書いた行)。

"liferay-[COMPANY_ID]": {
    "mappings" : {

次に、マッピングの最後から、最後の2つの中括弧を削除します。

    }
}

ここで、好きなマッピングを変更します。 変更は、変更を保存し、 サーバー管理から再インデックスをトリガーすると有効になります。

以下は部分的な例です。 動的テンプレート は、 additionalIndexConfigurations の分析構成を使用して、 _jaで終わるすべての文字列フィールドを分析します。 これを他のすべてのデフォルトマッピングと一緒にインクルードし、提供されている template_ja をこのカスタムマッピングで置き換えるのです。

{
     "dynamic_templates": [
         {
             "template_ja": {
                 "mapping": {
                     "analyzer": "kuromoji_liferay_custom",
                     "index": "analyzed",
                     "term_vector": "with_positions_offsets",
                     "type": "string"
                 },
                 "match": "\\w+_ja\\b|\\w+_ja_[A-Z]{2}\\b",
                 "match_mapping_type": "string",
                 "match_pattern": "regex"
             }
             ...
         }
     ]
}
重要
  • Liferay 7.4 U80+ 以降では、JSON ファイルの先頭に LiferayDocumentType 宣言を含めないでください。
  • Liferay DXP 2024.Q4+/Portal GA129+ 以降、Liferay は 保存フィールドをクエリしなくなり、デフォルトのマッピングでは使用されません。 これはパフォーマンス上の理由で変更されたため、可能であればオーバーライドされたマッピングで保存されたフィールドを使用しないようにする必要があります。

開発モードのElasticsearchに設定を追加する

追加設定(additionalConfigurations) フィールドを使用して、埋め込みまたはサイドカーのElasticsearchインスタンスの追加設定を(YAMLで)定義します。 これはテスト環境でのみ有効です。 通常、 elasticsearch.yml で設定するノードの設定は、すべてここで宣言することができます。 可能なすべてのノード設定の説明については、 Elasticsearch ドキュメント を参照してください。

複数行のYAML設定

OSGiの設定ファイルを使って前節の設定を行う場合、複数行にわたるYAMLスニペットを書く必要があるかもしれません。 各行に \n\を次のように追加します。

additionalConfigurations=\
                    cluster.routing.allocation.disk.threshold_enabled: false\n\
                    cluster.service.slow_task_logging_threshold: 600s\n\
                    index.indexing.slowlog.threshold.index.warn: 600s\n\
                    index.search.slowlog.threshold.fetch.warn: 600s\n\
                    index.search.slowlog.threshold.query.warn: 600s\n\
                    monitor.jvm.gc.old.warn: 600s\n\
                    monitor.jvm.gc.young.warn: 600s

簡単な設定から既存の型マッピングの上書きまで、ElasticsearchとLiferayのElasticsearchへのコネクターは設定が可能です。