使用this 。我正在构建以下索引:
TitanManagement management = graph.openManagement();
PropertyKey key = management.makePropertyKey("ITEM_IDENTIFIER").dataType(String.class).make();
management.buildIndex("byItemIdentifier", Vertex.class).addKey(key).buildCompositeIndex();
management.commit();
但是当我运行以下查询时:
graph.traversal().V().has("ITEM_IDENTIFIER", "Test");
我仍然收到警告:
Query requires iterating over all vertices [(ITEM_IDENTIFIER = Test)]. For better performance, use indexes
如何让 TitanDB 使用索引来加快查找速度?
最佳答案
所以我设法解决了这个问题。感谢this answer提供更多信息。
问题是我假设我会使用 CompositeIndex
但在更仔细地阅读 Chapter 20 之后, Chapter 22 ,和 Chapter 28其实我错了。基于 String
的索引需要 MixedIndex
。
为了让 MisedIndexes 处理字符串,我必须首先安装 Elasticsearch启用基于String
的索引。然后我可以通过替换来配置我的索引:
management.buildIndex("byItemIdentifier", Vertex.class).addKey(key).buildCompositeIndex();
与
management.buildIndex("byItemIdentifier", Vertex.class).addKey(key, Mapping.STRING.asParameter()).buildMixedIndex("search");
执行此操作后,警告消失了。我将进行更多测试以确认这是否有效,但目前这似乎已经解决了我的问题。
关于java - TitanDB 定义和使用索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33902817/