Liferay Elasticsearchコネクタの高度な設定 

LiferayのElasticsearchアダプタモジュールのデフォルト設定は、ElasticsearchConfigurationというJavaクラスに設定されています。

Elasticsearchアダプターにはデフォルトで様々なオプションが含まれていますが、それでも必要な設定オプションが見つからない場合もあります。このような場合、設定オプションを追加することもできます。Elasticsearchで設定可能な場合は、Elasticsearchアダプターを使って設定することができます。す。 

LIFERAY ELASTICSEARCH アダプターに設定とマッピングを追加する

使用可能な構成オプションは、2つのグループに分かれていると考えてください。簡単に構成できる最も一般的なもの、およびより複雑な構成より強引なアプローチが必要です。必要な設定がデフォルトで利用できない場合でも、Liferay Elasticsearchアダプターを使用して設定できます。 additionalConfigurationsadditionalIndexConfigurations、またはadditionalTypeMappings、および overrideTypeMappings設定を、少なくとも1つ以上必要です。

図1: System Settingで利用できるものにElasticsearchの設定を追加することが可能です。

追加設定

additionalConfigurationsは、EmbeddedモードのElasticsearchのための追加設定を(YAMLで)定義します。これはEmbeddedモードのElasticsearchサーバーを使用したテスト環境でのみ役に立ちます。通常elasticsearch.ymlで設定されているノード設定はすべてここで宣言できます。全ての可能なノード設定の説明については、Elasticsearchの資料を参照してください 。

インデックス追加の設定

additionalIndexConfigurationsは、作成時にLiferay DXPインデックスに適用される追加設定を(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"
}
}
}
}

Adding Type Mappings

additionalTypeMappingsは、LiferayDocumentType型定義のための追加のフィールドマッピングを定義します。これらはインデックスが作成されたときに適用されます。JSONシンタックスを使用して、これらのフィールドマッピングを追加します。詳しくはこちらこちらをご覧ください 。 新しいフィールドマッピングにadditionalTypeMappingsを使用しますが、既存のpropertiesマッピングは上書きしないでください。ここで設定したpropertiesマッピングのいずれかが既存のマッピングと重複すると、インデックスの作成は失敗します。overrideTypeMappingsをデフォルトのpropertiesマッピングを置き換えるために使用してください。

動的テンプレートと同様に、Liferay DXPの型マッピングにサブフィールドマッピングを追加できます。Elasticsearchではこれらはプロパティと呼ばれています。

{
"LiferayDocumentType": {
"properties": {
"fooName": {
"index": "true",
"store": "true",
"type": "keyword"
}
}
}
}

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

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

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

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

これはElasticsearchインスタンスがlocalhost:9200で実行され、Liferay DXP Company IDが20116に設定されている例です。

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

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

Overriding Type Mappings

overrideTypeMappingsは、Liferay DXPのデフォルトの型マッピングを上書きするために使用します。これは高度な機能であり、どうしても必要な場合にのみ使用します。この値を設定すると、Liferay DXPのソースコードでLiferayドキュメントタイプを定義するために使用されるデフォルトのマッピング(例:liferay-type-mappings.json)は完全に無視されるため、変更するセグメントだけではなく、マッピングの定義全体をこのプロパティに含めます。変更するには、URLに移動してインデックスの作成に使用されている現在のマッピングのリスト全体を探します。

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

このプロパティの値としての内容を(システム設定またはOSGi設定ファイルに)コピーします。左側の中括弧{はそのままにしますが、2〜4行目を完全に削除します。

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

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

}
}
}

この時点で、適切なマッピングを変更します。変更を保存してServer Administrationからのインデックスの再作成を実行すると、変更が有効になります。

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

{
"LiferayDocumentType": {
"dynamic_templates": [
{
"template_ja": {
"mapping": {
"analyzer": "kuromoji_liferay_custom",
"index": "analyzed",
"store": "true",
"term_vector": "with_positions_offsets",
"type": "string"
},
"match": "\\w+_ja\\b|\\w+_ja_[A-Z]{2}\\b",
"match_mapping_type": "string",
"match_pattern": "regex"
}
...
}
]
}
}

マルチラインYML設定

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へのコネクタで設定可能です。

« Liferay Elasticsearchコネクタの設定Elasticsearch コネクタの設定:リファレンス »
この記事は役に立ちましたか?
0人中0人がこの記事が役に立ったと言っています