この記事では、Elasticsearch 6を使用する際に遭遇する可能性のある一般的な問題を取り上げ、それらを解決するためのトラブルシューティングガイドとして機能します。 これらの問題の中には、Liferay DXP 7.0のみに適用されるものと、バージョン7.0と7.1に適用されるものがあることにご注意ください。
解決策
Liferay DXP 7.0をご利用のお客様へ
-
2つのLiferay Elasticsearch Adaptersがアクティブになっています。
Liferay ConnectorをElasticsearch 6に切り替え、インストール、設定する前に、デフォルトのLiferay Portal Search Elasticsearch (2.x adapter) モジュールを無効化/非活性化したことを確認してください。 うまくいっていれば、Foundationセクションの下にあるSystem Settings-called Elasticsearch 6-で利用できるElasticsearchの設定は1つだけになっているはずです。 また、Liferay Portal Search Elasticsearchモジュールは、App ManagerではResolvedの状態になっていますが、Activeになっていないはずです。
-
OSGi/Stateフォルダを削除したらポータルサーチのElasticsearch (ES2) アダプターが再び起動した。
バンドルの状態は、インストールの Liferay Home フォルダ下の OSGi/State フォルダに保存されます。 パッチ適用後にこのフォルダを削除すると、Elasticsearchアダプタが自動的に再起動されるため、手動で停止する必要があります。 パッチ適用に関する詳細は、カスタマーポータルの パッチ適用に関するドキュメントをご覧ください。
-
Liferay Connector to Elasticsearch 6 が既にインストールされアクティブになっている場合、Portal Search Elasticsearch (ES2) アダプターを非アクティブにすると NullPointerException が発生します。
Elasticsearch 6 (ES6) アダプタが既にインストールされアクティブになっている状態で、何らかの理由(上記参照)でデフォルトの Elasticsearch 2 (ES2) アダプタが起動した場合、App Manager を使用して ES2 アダプタを非アクティブ化する際に NPE エラーが発生する場合があります。 ES2アダプタはアクティブであるべきではないので、このエラーは無視でき、問題を示すものではありません。 以下は、エラーのスニペットです:
2018-04-06 15:34:35.000 ERROR [http-nio-8080-exec-5][com_liferay_portal_search:97] [com.liferay.portal.search.internal.SearchEngineHelperImpl(1575)] The removeSearchEngineConfigurator method has thrown an exception java.lang.NullPointerException at com.liferay.portal.search.elasticsearch.internal.connection.BaseElasticsearchConnection.getClusterHealthResponse(BaseElasticsearchConnection.java:80) at com.liferay.portal.search.elasticsearch.internal.connection.ElasticsearchConnectionManager.getClusterHealthResponse(ElasticsearchConnectionManager.java:81) at com.liferay.portal.search.elasticsearch.internal.ElasticsearchSearchEngine.waitForYellowStatus(ElasticsearchSearchEngine.java:341) at com.liferay.portal.search.elasticsearch.internal.ElasticsearchSearchEngine.initialize(ElasticsearchSearchEngine.java:112) at com.liferay.portal.kernel.search.SearchEngineProxyWrapper.initialize(SearchEngineProxyWrapper.java:95) at com.liferay.portal.search.internal.SearchEngineHelperImpl.setSearchEngine(SearchEngineHelperImpl.java:252) at com.liferay.portal.kernel.search.AbstractSearchEngineConfigurator.setSearchEngine(AbstractSearchEngineConfigurator.java:434) at com.liferay.portal.kernel.search.AbstractSearchEngineConfigurator.destroySearchEngine(AbstractSearchEngineConfigurator.java:232) at com.liferay.portal.kernel.search.AbstractSearchEngineConfigurator.destroy(AbstractSearchEngineConfigurator.java:93) at com.liferay.portal.search.elasticsearch6.internal.ElasticsearchEngineConfigurator.destroy(ElasticsearchEngineConfigurator.java:52) at com.liferay.portal.search.internal.SearchEngineHelperImpl.removeSearchEngineConfigurator(SearchEngineHelperImpl.java:303) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.apache.felix.scr.impl.inject.BaseMethod.invokeMethod(BaseMethod.java:224) at org.apache.felix.scr.impl.inject.BaseMethod.access$500(BaseMethod.java:39) at org.apache.felix.scr.impl.inject.BaseMethod$Resolved.invoke(BaseMethod.java:617) at org.apache.felix.scr.impl.inject.BaseMethod.invoke(BaseMethod.java:501) at org.apache.felix.scr.impl.inject.BindMethod.invoke(BindMethod.java:655) at org.apache.felix.scr.impl.manager.DependencyManager.invokeUnbindMethod(DependencyManager.java:1837) at org.apache.felix.scr.impl.manager.SingleComponentManager.invokeUnbindMethod(SingleComponentManager.java:394) at org.apache.felix.scr.impl.manager.DependencyManager$MultipleDynamicCustomizer.removedService(DependencyManager.java:375) at org.apache.felix.scr.impl.manager.DependencyManager$MultipleDynamicCustomizer.removedService(DependencyManager.java:291) at org.apache.felix.scr.impl.manager.ServiceTracker$Tracked.customizerRemoved(ServiceTracker.java:1241) at org.apache.felix.scr.impl.manager.ServiceTracker$Tracked.customizerRemoved(ServiceTracker.java:1136) at org.apache.felix.scr.impl.manager.ServiceTracker$AbstractTracked.untrack(ServiceTracker.java:996) at org.apache.felix.scr.impl.manager.ServiceTracker$Tracked.serviceChanged(ServiceTracker.java:1175) at org.apache.felix.scr.impl.BundleComponentActivator$ListenerInfo.serviceChanged(BundleComponentActivator.java:127) at org.eclipse.osgi.internal.serviceregistry.FilteredServiceListener.serviceChanged(FilteredServiceListener.java:109) at org.eclipse.osgi.internal.framework.BundleContextImpl.dispatchEvent(BundleContextImpl.java:917) at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:230) at org.eclipse.osgi.framework.eventmgr.ListenerQueue.dispatchEventSynchronous(ListenerQueue.java:148) at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.publishServiceEventPrivileged(ServiceRegistry.java:862) at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.publishServiceEvent(ServiceRegistry.java:801) at org.eclipse.osgi.internal.serviceregistry.ServiceRegistrationImpl.unregister(ServiceRegistrationImpl.java:222) at org.apache.felix.scr.impl.manager.AbstractComponentManager$3.unregister(AbstractComponentManager.java:908) at org.apache.felix.scr.impl.manager.AbstractComponentManager$3.unregister(AbstractComponentManager.java:873)
-
LPKGVerifyException - Liferay Connector to 'Elasticsearch 6.lpkg' Does Not Have 'liferay-marketplace.properties' When Deploying.
このエラーが表示されている場合
2018-07-13 09:31:26.740 ERROR [Start Level: Equinox Container: 00095840-7f86-0018-1430-b100bdbf75c2][DefaultLPKGDeployer:467] Unable to deploy LPKG file /opt/liferay-dxp-digital-enterprise-7.0/osgi/marketplace/Liferay Connector to Elasticsearch 6.lpkg com.liferay.portal.lpkg.deployer.LPKGVerifyException: com.liferay.portal.lpkg.deployer.LPKGVerifyException: /opt/liferay-dxp-digital-enterprise-7.0/osgi/marketplace/Liferay Connector to Elasticsearch 6.lpkg does not have liferay-marketplace.properties at com.liferay.portal.lpkg.deployer.internal.DefaultLPKGVerifier.verify(DefaultLPKGVerifier.java:125) at com.liferay.portal.lpkg.deployer.internal.DefaultLPKGDeployer.deploy(DefaultLPKGDeployer.java:118) at com.liferay.portal.lpkg.deployer.internal.DefaultLPKGDeployer._instalLPKGs(DefaultLPKGDeployer.java:458) at com.liferay.portal.lpkg.deployer.internal.DefaultLPKGDeployer._activate(DefaultLPKGDeployer.java:341) at com.liferay.portal.lpkg.deployer.internal.DefaultLPKGDeployer.activate(DefaultLPKGDeployer.java:95)
Liferay Connector to ElasticSearch 6 アプリケーションの正しいバージョンが Liferay のバージョンにデプロイされていることをダブルチェックしてください。 以前のバージョンのプラグインが必要な場合は、Liferay AccountのPurchased Appsページに戻り、Past Versionsをクリックしてください。 参考までに、 Liferay Enterprise Searchの対応・互換表はこちらです。
-
Liferay Connector to Elasticsearch 6 の Fix Pack 42 (FP42) 以下で LPKGVerifyException が発生する。
DXP DE 7.0 上で Liferay Connector to Elasticsearch 6 を展開し使用するには、API の依存関係から DE 7.0 Fix Pack 42 (FP42 = DE42) 以上のインストールが必須となります。 そうでない場合は、ポータル起動時に同様のエラーが発生します:
06-Apr-2018 14:20:48.779 SEVERE [localhost-startStop-1] org.apache.catalina.core.StandardContext.listenerStart Exception sending context initialized event to listener instance of class com.liferay.portal.spring.context.PortalContextLoaderListener java.lang.RuntimeException: com.liferay.portal.lpkg.deployer.LPKGVerifyException: LPKG validation failed with {[missing requirement com.liferay.portal.search.elasticsearch6.impl; version=1.0.1; type=osgi.bundle [caused by: Unable to resolve com.liferay.portal.search.elasticsearch6.impl version=1.0.1: missing requirement com.liferay.portal.search.suggest; version=[1.0.0,2.0.0)]]} at com.liferay.portal.spring.context.PortalContextLoaderListener.contextInitialized(PortalContextLoaderListener.java:262) at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4812) at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5255) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:147) at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:725) at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:701) at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:717) at org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:585) at org.apache.catalina.startup.HostConfig$DeployDescriptor.run(HostConfig.java:1794) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:748) Caused by: com.liferay.portal.lpkg.deployer.LPKGVerifyException: LPKG validation failed with {[missing requirement com.liferay.portal.search.elasticsearch6.impl; version=1.0.1; type=osgi.bundle [caused by: Unable to resolve com.liferay.portal.search.elasticsearch6.impl version=1.0.1: missing requirement com.liferay.portal.search.suggest; version=[1.0.0,2.0.0)]]} at com.liferay.portal.lpkg.deployer.internal.LPKGIndexValidator.validate(LPKGIndexValidator.java:262) at com.liferay.portal.lpkg.deployer.internal.DefaultLPKGDeployer._activate(DefaultLPKGDeployer.java:333) at com.liferay.portal.lpkg.deployer.internal.DefaultLPKGDeployer.activate(DefaultLPKGDeployer.java:95) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) ... 2018-04-06 14:20:48.857 ERROR [localhost-startStop-1][PortalBeanLocatorUtil:109] BeanLocator is null 06-Apr-2018 14:20:48.858 SEVERE [localhost-startStop-1] org.apache.catalina.core.StandardContext.listenerStop Exception sending context destroyed event to listener instance of class com.liferay.portal.spring.context.PortalContextLoaderListener com.liferay.portal.kernel.bean.BeanLocatorException: BeanLocator is not set at com.liferay.portal.kernel.bean.PortalBeanLocatorUtil.locate(PortalBeanLocatorUtil.java:74) at com.liferay.portal.spring.context.PortalContextLoaderListener.closeDataSource(PortalContextLoaderListener.java:381) at com.liferay.portal.spring.context.PortalContextLoaderListener.contextDestroyed(PortalContextLoaderListener.java:155) at org.apache.catalina.core.StandardContext.listenerStop(StandardContext.java:4859) at org.apache.catalina.core.StandardContext.stopInternal(StandardContext.java:5478) at org.apache.catalina.util.LifecycleBase.stop(LifecycleBase.java:224) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:159) at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:725) at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:701) at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:717) at org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:585) at org.apache.catalina.startup.HostConfig$DeployDescriptor.run(HostConfig.java:1794) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:748)
-
Fix Pack 42(FP42)以降にアップグレードした場合、すべてのスペルチェックのインデックスを再作成する必要があります。
Due to the removal of mapping types in Elasticsearch 6, administrators are required to execute Reindex all spell check indexes from the Server Administration to reindex spell check and query suggestion dictionaries even if still running on an Elasticsearch 2 server. LPS-76675をご参照ください。
Liferay DXP 7.0または7.1でのお客様
-
Liferay Connector to X-Pack Monitoringで動作するように設定した後、Kibanaにアクセスできない。
kibana.yml
でserver.basePath
を設定すると、 https://localhost:5601から Kibana UI にアクセスすることができなくなります。 Kibana UIへのアクセスはすべてモニタリングポートレットを経由し、DXPにログインしているユーザーのみがアクセス可能です。 この URL を使って、ポートレットに直接アクセスしてください: http://localhost:8080/o/portal-search-elasticsearch-xpack-monitoring/xpack-monitoring-proxy/app/monitoring. -
Kibana 6.2.xでX-Pack Monitoring Portletを使用すると、どのタブをクリックしてもメインページが読み込まれる。
これは、現在の統合が Elasticsearch 6.1.x と Kibana 6.1.x のバージョンにのみ対応しているためです。 Liferay Enterprise Search の対応・互換表で、対応・互換バージョンをご確認ください。
-
Elasticsearch 6のNettyの使用によるシャットダウン時のThreadLocalリークの可能性について
Elasticsearchが内部で使用しているNetty(ネットワークアプリケーションフレームワーク)には既知の問題があります。 アプリケーションサーバー/サーブレットコンテナの停止時に、ポータルログに以下のエラーメッセージが表示される場合があります:
org.apache.catalina.loader.WebappClassLoaderBase.checkThreadLocalMapForLeaks The web application [ROOT] created a ThreadLocal with key of type [java.lang.ThreadLocal] (value [java.lang.ThreadLocal@ccb08cb]) and a value of type [io.netty.util.internal.InternalThreadLocalMap] (value [io.netty.util.internal.InternalThreadLocalMap@21c8be8a]) but failed to remove it when the web application was stopped. Threads are going to be renewed over time to try and avoid a probable memory leak.
Netty に util メソッドがあり、適切なクリーンアップが行われているにもかかわらず、サーブレットリスナーやTomcatのライフサイクルリスナーから呼び出すと、エラーメッセージが再生されます。 このクリーンアップの失敗は、JVMの実装の詳細 の結果である可能性さえある。
Netty チームは、 エラーを単純に受け入れることを決定したため、 Elasticsearch と Liferay の両方がこのエラーを解決することができない。
-
Elasticsearch 6でX-Pack Securityを無効にする方法
1.
elasticsearch.yml
の「xpack」関連の設定をコメントアウトする。2. 追加
xpack.security.enabled: false
詳しくはElasticsearchのサイト-KibanaのSecurity Settingsをご覧ください:一般的なセキュリティ設定.