gpt4 book ai didi

elasticsearch - Titan 1.0混合索引不适用于警告-查询需要遍历所有顶点

转载 作者:行者123 更新时间:2023-12-03 01:54:35 25 4
gpt4 key购买 nike

我正在将Titan1.0与elasticsearch用作后端。
从titan文档中,我了解到,对于使用Elasticsearch,我们在构建索引时使用了MixedIndex。
这是我的用例和问题:
我正在为书店的注册数据,具有注册时间的数据以及其他个人信息(例如姓名和年龄)创建一个图形数据库。我想查询在给定时间范围内注册的所有用户,换句话说,我想要查询的数字比较功能。这就是我创建索引的方式:

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命令检查并确认数据在那里,但结果却是空的。我做错什么了吗?我怎么解决这个问题?

最佳答案

此错误意味着索引尚未为ENABLED

Titan索引具有INSTALLEDREGISTEREDENABLEDDISABLED状态。有关更多信息,请查看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

关于elasticsearch - Titan 1.0混合索引不适用于警告-查询需要遍历所有顶点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37563794/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com