問題
場合によっては、Elasticsearchのノードインデックスが不適切に作成され、ドキュメントが正常に注入されたように見えるが、ポータルでアセットを検索しようとすると何も見つからないということがあります。
com.liferay.portal.search
パッケージのデバッグレベルを変更したにもかかわらず、エラーは表示されず、Elasticsearch のログには問題なくクエリが記録されています。
この問題は、Elasticsearchの関連インデックスのマッピングが正しくないために発生する可能性があります。
環境
- Liferay DXP 7.0
- Liferay DXP 7.1
- Liferay DXP 7.2
- Liferay DXP 7.3
- Liferay DXP 7.4
- 四半期リリース 2023.Q4
解像度
この問題を解決するには、以下の手順に従ってください:
-
インデックスのマッピングを確認する:
curl "http://${ip_elasticsearch}:9200/${prefix_index}-*/_mapping/LiferayDocumentType"
- Elasticsearch の action.auto_create_index プロパティが false になっていないか確認し、自動的にインデックスが作成されないようにします。
-
誤ったインデックスを削除する:
curl -X DELETE "${ip_elasticsearch}:9200/${index_name}?pretty"
-
以下のgroovyスクリプトを使用して、erroneusインデックスに関連付けられた会社のインデックスを強制的に再作成します:
/* Company to full reindex */
def companyId = 59093686;
def userId = java.lang.Long.parseLong(userInfo.get("liferay.user.id"));
com.liferay.portal.kernel.search.IndexWriterHelperUtil.reindex(userId, "reindex", [companyId] as long[], null); - インデックスのマッピングを再度確認する。 これで、その会社の資産を検索できるはずです。
追加情報
- https://www.elastic.co/guide/en/elasticsearch/reference/current/index-management-settings.html
- https://www.elastic.co/guide/en/elasticsearch/reference/7.17/docs-index_.html#index-creation