我使用Titan 1.0.0和Cassandra作为存储后端,弹性搜索作为索引后端,想要建模一个具有多个顶点和边缘的复杂图形。我要考虑以下事项:
我应该选择多个具有单个属性的MixedIndexes,还是单个MixedIndex具有多个属性?
mgmt.buildIndex('nameAndAge',Vertex.class).addKey(name,Mapping.TEXT.getParameter()).addKey(age,Mapping.TEXT.getParameter()).buildMixedIndex("search")
OR
mgmt.buildIndex('nameMixed',Vertex.class).addKey(name,Mapping.TEXT.getParameter()).buildMixedIndex("search")
mgmt.buildIndex('ageMixed',Vertex.class).addKey(age,Mapping.TEXT.getParameter()).buildMixedIndex("search")
如果我选择带有多个属性的singel Mixed index 然后它可以跨越边和顶点上的属性或者是否存在 任何准则?
如果该财产需要,是否有任何特殊考虑因素 有索引吗?
答案 0 :(得分:2)
在这里查看说明文件
混合索引通过以前添加的属性键的任意组合检索顶点或边。
实施例
String query="v.*:Phani"; // searches any property in the index with a value that includes `Phani`
Iterable<TitanIndexQuery.Result<TitanVertex>> result = titanGraph.indexQuery("name_mixed_index", query).vertices();
搜索您创建的混合索引的所有属性。如果您添加了10个添加到此索引的属性,它将搜索10,依此类推。
我的建议是,对所有感兴趣的属性使用单个混合索引,这样您就可以一次查询所有属性,或者使用您喜欢的任何组合查询它们。如果您想要单个索引,请使用复合索引。
您不能跨索引和边共享相同的属性值。但是你可以在所有这些中拥有相同的属性名称。如果您打算查询单个属性,请瞄准复合索引。
是否有兴趣进行包含多个值或涉及订购的查询?使用具有多个属性的混合索引。 # 有兴趣仅对一个属性进行查询,请使用复合索引。
有关详情,请阅读文档here for Indexing in Titan 1.0.0。