2016-06-01 5 views
0

私はelasticsearchをバックエンドとしてTitan 1.0を使用しています。 titanのドキュメントから、私はelasticsearchを使用するためにインデックスを作成する際にmixedIndexを使用することを知りました。 ここに私の使用例と問題があります: 私は書店の登録データ、登録時間のデータ、および名前や年齢などのその他の個人情報のグラフデータベースを作成しています。私は、指定された時間範囲内に登録されたすべてのユーザーを照会したい、言い換えれば、照会の数値比較機能が必要です。これは私がインデックスを作成する方法である:Titan 1.0の混合インデックスが警告と一緒に動作しない - クエリですべての頂点を繰り返し処理する必要がある

PropertyKey propertyKey = mgmt.makePropertyKey("registTime").dataType(Date.class) 
    .cardinality(Cardinality.SINGLE).make() 

timeIndex = mgmt.buildIndex("registeredTime",Vertex.class) 
    .addKey("registTime", Mapping.TEXTSTRING.asParameter()) 
    .buildMixedIndex("search"); 

私が登録した時間を照会したい場合timeIndexが、しかし、正常に作成されます。

g.V().has("registTime", gt("2015-01-01 00:00:00.000+0000")) 

それは私に与える:

WARN com.thinkaurelius.titan.graphdb.transaction.StandardTitanTx - Query requires iterating over all vertices [()]. For better performance, use indexes 

とgremlinコマンドで確認してもデータが空であることを確認しても空の結果が得られます。私は間違って何かしていますか?どうすればこの問題を解決できますか?

答えて

1

このエラーは、インデックスがまだENABLEDではないことを意味します。

タイタンインデックスは、INSTALLED,REGISTERED,ENABLEDおよびDISABLEDの状態を有する。詳細はhereをご覧ください。

インデックスステートを使用する前にENABLEDに設定する必要があります。それ以外の場合は、この警告が表示されます。

インデックスを有効にする方法です。それがスイッチするまで

mgmt = graph.openManagement() 
mgmt.updateIndex(mgmt.getGraphIndex("registeredTime"), SchemaAction.ENABLE).get() 
mgmt.commit() 

が続いて今からそう

、それのために

ManagementSystem.awaitGraphIndexStatus(graph, propertyKeyIndexName) 
        .status(SchemaStatus.ENABLED) 
        .timeout(10, ChronoUnit.MINUTES) // set timeout to 10 min 
        .call(); 
を待って、追加したすべてのデータがインデックス化されます。あなたは、インデックス、既に追加されたデータにしたい場合は、次の詳細については

mgmt = graph.openManagement() 
mgmt.updateIndex(mgmt.getGraphIndex("registeredTime"), SchemaAction.REINDEX).get() 
mgmt.commit() 

、あなたの迅速な応答をdocs herehere

+0

感謝をお読みください。インデックスが正しく作成されていないことがわかりました。データ型(Date.class)のためにインデックスが作成されているのだろうかと思います。しかし、私はタイタン文書から、混合インデックスはDate型もサポートしていることを学びました。 String.classに変更すると、正しく作成されます。 – RWM

+0

また、正しく作成されていても、mgmt.updateIndex(mgmt.getGraphIndex( "registeredTime")、SchemaAction.ENABLE_INDEX).get();行でNullPointerExceptionが発生しました。 。 – RWM

関連する問題