我使用Titan 1.0和elasticsearch作为后端。 从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