我有一个带有Cassandra存储后端的Titan数据库,我正在尝试基于两个属性键创建一个混合索引。
我可以使用以下命令注册索引:
graph=TitanFactory.open(config);
graph.tx().rollback()
m = graph.openManagement();
m.buildIndex("titleBodyMixed", Vertex.class).addKey(m.getPropertyKey("title")).addKey(m.getPropertyKey("body")).buildMixedIndex("search");
m.commit();
m.awaitGraphIndexStatus(graph, 'titleBodyMixed').status(SchemaStatus.REGISTERED).timeout(3, java.time.temporal.ChronoUnit.MINUTES).call();
当我检查时,索引在几秒钟后成功注册。在下一步中,我尝试使用以下命令重新索引数据库:
m = graph.openManagement();
m.updateIndex(m.getGraphIndex('titleBodyMixed'), SchemaAction.REINDEX).get();
但是,updateIndex命令没有完成,(12小时后)。
我在数据库中有大约300k的数据输入,每个数据条目都有一个Title和一个Body来索引。
我的问题是如何加快索引速度?
当我使用top命令时,我看到我的CPU没有被索引进程所饱和:
我的Titan配置文件如下:
config =new BaseConfiguration();
config.setProperty("storage.backend","cassandra");
config.setProperty("storage.hostname", "127.0.0.1");
config.setProperty("storage.cassandra.keyspace", "smartgraph");
config.setProperty("index.search.elasticsearch.interface", "NODE");
config.setProperty("index.search.backend", "elasticsearch");
以下是弹性搜索服务属性:
curl -X GET 'http://localhost:9200'
{
"status" : 200,
"name" : "Ms. Marvel",
"cluster_name" : "elasticsearch",
"version" : {
"number" : "1.7.2",
"build_hash" : "e43676b1385b8125d647f593f7202acbd816e8ec",
"build_timestamp" : "2015-09-14T09:49:53Z",
"build_snapshot" : false,
"lucene_version" : "4.10.4"
},
"tagline" : "You Know, for Search"
}
答案 0 :(得分:0)
这个想法是,除非所有会话都关闭,否则索引重建索引过程不会启动。您最有可能在数据库中打开会话。因此,永远不会触发reindex作业。
使用this Gremlin script,您可以关闭所有会话。您应该看到索引将在之后发生。
这会有帮助吗?