2016-07-07 9 views
0

私はCassandraストレージバックエンドを持つTitanデータベースを持っており、2つのプロパティキーに基づいて混合インデックスを作成しようとしています。弾性検索インデックスが非常に遅い

私は次のコマンドを使用してインデックスを登録することができる午前:

graph=TitanFactory.open(config); 
graph.tx().rollback() 

m = graph.openManagement(); 
m.buildIndex("titleBodyMixed", Vertex.class).addKey(m.getPropertyKey("title")).addKey(m.getPropertyKey("body")).buildMixedIndex("search"); 
m.commit(); 

m.awaitGraphIndexStatus(graph, 'titleBodyMixed').status(SchemaStatus.REGISTERED).timeout(3, java.time.temporal.ChronoUnit.MINUTES).call(); 

そして、私はチェックしています、インデックスが正常に数秒後に登録されています。次のステップでは、私は、次のコマンドを使用して、データベースのインデックスを再作成しよう:

m = graph.openManagement(); 
m.updateIndex(m.getGraphIndex('titleBodyMixed'), SchemaAction.REINDEX).get(); 

しかし、updateIndexコマンドは、(12時間後)、仕上げされていません。

データベースに約300kのデータエントリがあり、各データエントリには1つのタイトルと1つの本文があります。

私の質問は、どのようにインデックスをスピードアップできますか?

私はtopコマンドを使用していたとき、私は私のCPUは、索引付けプロセスによって飽和されていないことを参照してください。

enter image description here

マイタイタンの設定ファイルは、のように怒鳴るです:

config =new BaseConfiguration(); 
config.setProperty("storage.backend","cassandra"); 
config.setProperty("storage.hostname", "127.0.0.1"); 
config.setProperty("storage.cassandra.keyspace", "smartgraph"); 
config.setProperty("index.search.elasticsearch.interface", "NODE"); 
config.setProperty("index.search.backend", "elasticsearch"); 

以下れますelasticsearchサービスのプロパティを示す:

curl -X GET 'http://localhost:9200' 
{ 
    "status" : 200, 
    "name" : "Ms. Marvel", 
    "cluster_name" : "elasticsearch", 
    "version" : { 
    "number" : "1.7.2", 
    "build_hash" : "e43676b1385b8125d647f593f7202acbd816e8ec", 
    "build_timestamp" : "2015-09-14T09:49:53Z", 
    "build_snapshot" : false, 
    "lucene_version" : "4.10.4" 
    }, 
    "tagline" : "You Know, for Search" 
} 

答えて

0

アイデアは、すべてのセッションが閉じられていない限り、インデックスの再インデックス処理が開始されないということです。ほとんどの場合、セッションはデータベースで開かれています。したがって、再インデックスジョブは決してトリガーされません。

this Gremlin scriptを使用すると、すべてのセッションを閉じることができます。索引付けは後で行われることがわかります。

これは役に立ちますか?

関連する問題