Solrライブラリ・パスの構成
<lib>プロパティによって定義されたディレクトリーにあるファイルを見つけられないDSE Searchでの障害を回避するための策。
DataStax Enterpriseのライブラリ・ファイルの場所は、オープン・ソースSolrの場所と同じではありません。solrconfig.xmlファイルの例では、相対パスがサポートされていることを示していますが、DataStax Enterpriseでは、<lib>プロパティに対して設定された相対パス値をサポートしていません。DSE Searchは、<lib>プロパティによって定義されたディレクトリーにあるファイルを見つけられません。回避策として、カスタム・コードまたはSolr contribモジュールをSolrライブラリー・ディレクトリーに配置します。
回避策として、JARファイル、カスタム・コード、またはSolr contribモジュールをSolrライブラリー・ディレクトリーに配置します。
Solrライブラリ・パスのデフォルトの場所は、インストールのタイプによって異なります。
Installer-Services | /usr/share/dse/resources/solr/lib |
パッケージ・インストール | /usr/share/dse/solr/lib |
Installer-No Servicesおよびtarボール・インストール | install_location/resources/solr/lib |
プラグインJARファイルが、<lib>プロパティで定義されているディレクトリーに存在しないと、
java.lang.ClassNotFoundException
を使用してカスタムSolrライブラリーをDataStax Enterpriseで展開する試みは失敗し、以下のように、system.logでエラーとして示されます。ERROR [http-8983-exec-5] 2015-12-06 16:32:33,992 CoreContainer.java (line 956) Unable to create core:boogle.main
org.apache.solr.common.SolrException:Error loading class 'com.boogle.search.CustomQParserPlugin'
at org.apache.solr.core.SolrCore.(SolrCore.java:851)
at org.apache.solr.core.SolrCore.(SolrCore.java:640)
at com.datastax.bdp.search.solr.core.CassandraCoreContainer.doCreate(CassandraCoreContainer.java:675)
at com.datastax.bdp.search.solr.core.CassandraCoreContainer.create(CassandraCoreContainer.java:234)
at com.datastax.bdp.search.solr.core.SolrCoreResourceManager.createCore(SolrCoreResourceManager.java:256)
at com.datastax.bdp.search.solr.handler.admin.CassandraCoreAdminHandler.handleCreateAction(CassandraCoreAdminHandler.java:117)
...
Caused by:org.apache.solr.common.SolrException:Error loading class 'com.boogle.search.CustomQParserPlugin'
at org.apache.solr.core.SolrResourceLoader.findClass(SolrResourceLoader.java:474)
at org.apache.solr.core.SolrResourceLoader.findClass(SolrResourceLoader.java:405)
at org.apache.solr.core.SolrCore.createInstance(SolrCore.java:541)
...
Caused by:java.lang.ClassNotFoundException:com.boogle.search.CustomQParserPlugin
at java.net.URLClassLoader$1.run(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
...
回避策
以下の例では、com.boogle.search.CustomQParserPlugin-1.0.jarという名前のJARファイルでクラスを使用し、以下の手順に従ってすべてのDSE Searchノードでカスタム・プラグインを機能させます。
- 以下のようにしてsolrconfig.xmlファイルでパーサーを定義します。
<queryParser name="myCustomQP" class="com.boogle.search.CustomQParserPlugin"/>
- Solrライブラリー・ディレクトリーにカスタム・コードまたはSolr contribモジュールを配置します。
- 該当するlib/ディレクトリーで、クラスターのすべてのDSE Searchノード上でJARファイルを展開します。
たとえば、パッケージ・インストールは以下の場所になります。 /usr/share/dse/solr/lib/com.boogle.search.CustomQParserPlugin-1.0.jar
- 新しい構成でSolrコアを再度読み込みます。