2017-12-05 17 views
0

経由のLuceneを使用するには接続すると次のエラーが表示されます:設定JanusGraphは、私は次のコードを使用してJanusGraphに接続しようとしているJavaの

Exception in thread "Thread-4" java.lang.RuntimeException: GraphFactory could not instantiate this Graph implementation [class org.janusgraph.core.JanusGraphFactory] 
    at org.apache.tinkerpop.gremlin.structure.util.GraphFactory.open(GraphFactory.java:82) 
    at org.apache.tinkerpop.gremlin.structure.util.GraphFactory.open(GraphFactory.java:70) 
    at uk.gov.nca.cdp.graphutils.server.controllers.MergeGraph.lambda$merge$0(MergeGraph.java:26) 
    at java.lang.Thread.run(Thread.java:748) 
Caused by: java.lang.reflect.InvocationTargetException 
    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.tinkerpop.gremlin.structure.util.GraphFactory.open(GraphFactory.java:78) 
    ... 3 more 
Caused by: java.lang.IllegalArgumentException: Could not find implementation class: org.janusgraph.diskstorage.es.ElasticSearchIndex 
    at org.janusgraph.util.system.ConfigurationUtil.instantiate(ConfigurationUtil.java:61) 
    at org.janusgraph.diskstorage.Backend.getImplementationClass(Backend.java:477) 
    at org.janusgraph.diskstorage.Backend.getIndexes(Backend.java:464) 
    at org.janusgraph.diskstorage.Backend.<init>(Backend.java:149) 
    at org.janusgraph.graphdb.configuration.GraphDatabaseConfiguration.getBackend(GraphDatabaseConfiguration.java:1897) 
    at org.janusgraph.graphdb.database.StandardJanusGraph.<init>(StandardJanusGraph.java:136) 
    at org.janusgraph.core.JanusGraphFactory.open(JanusGraphFactory.java:164) 
    at org.janusgraph.core.JanusGraphFactory.open(JanusGraphFactory.java:133) 
    at org.janusgraph.core.JanusGraphFactory.open(JanusGraphFactory.java:113) 
    ... 8 more 
Caused by: java.lang.ClassNotFoundException: org.janusgraph.diskstorage.es.ElasticSearchIndex 
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424) 
    at org.springframework.boot.loader.LaunchedURLClassLoader.loadClass(LaunchedURLClassLoader.java:94) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357) 
    at java.lang.Class.forName0(Native Method) 
    at java.lang.Class.forName(Class.java:264) 
    at org.janusgraph.util.system.ConfigurationUtil.instantiate(ConfigurationUtil.java:56) 
    ... 16 more 

これはE Luceneではなくlasticsearchです。 Luceneを使用するように正しく設定するにはどうすればよいですか?

答えて

4

実行中の問題は、構成でstorage.hbase.tableが定義されていないため、デフォルトのテーブル名janusgraphが使用されていることです(JanusGraph configuration referenceを参照)。 janusgraphという名前のHBaseテーブルは、事前にインデックス作成プロバイダ用のElasticsearchで作成されている必要があります。 JanusGraphはHBaseテーブルに初期設定を保存していますので、janusgraphテーブルに接続すると、janusgraphテーブルから古いプロパティが読み込まれます。

  • 既存のjanusgraph HBaseテーブルを削除する必要があります。 HBaseのシェルから:

    • index.[X].backend=lucene
    • disable 'janusgraph'; drop 'janusgraph';
    • JanusGraph Lucene documentationに記載されているようにstorage.hbase.table=mygraph

    を設定することにより、別のHBaseのテーブルを使用して、Luceneのインデクシングバックエンドは、その構成の2つのパラメータを必要としますindex.[X].directory=/data/searchindex

ここで、[X]は索引の名前です。これは、例でよく見られるsearchindex、またはsearchというディレクトリ名と一致するように設定することも、質問の中でjanusgraph-indexとすることもできます。両方の構成プロパティーが含まれていることを確認してください。

関連する問題