私は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コマンドで確認してもデータが空であることを確認しても空の結果が得られます。私は間違って何かしていますか?どうすればこの問題を解決できますか?
感謝をお読みください。インデックスが正しく作成されていないことがわかりました。データ型(Date.class)のためにインデックスが作成されているのだろうかと思います。しかし、私はタイタン文書から、混合インデックスはDate型もサポートしていることを学びました。 String.classに変更すると、正しく作成されます。 – RWM
また、正しく作成されていても、mgmt.updateIndex(mgmt.getGraphIndex( "registeredTime")、SchemaAction.ENABLE_INDEX).get();行でNullPointerExceptionが発生しました。 。 – RWM