【问题标题】:Elasticsearch indexing is very slowElasticsearch 索引非常慢
【发布时间】:2016-11-10 05:13:30
【问题描述】:

我有一个带有 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");

以下为 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"
}

【问题讨论】:

    标签: elasticsearch cassandra titan gremlin


    【解决方案1】:

    这个想法是,除非所有会话都关闭,否则索引重新索引过程不会开始。您很可能打开了与数据库的会话。因此,永远不会触发重新索引作业。

    使用this Gremlin script,您可以关闭所有会话。您应该会看到索引将在之后进行。

    这会有帮助吗?

    【讨论】:

      猜你喜欢
      • 2020-05-10
      • 2019-03-13
      • 1970-01-01
      • 1970-01-01
      • 2019-04-29
      • 2021-11-18
      • 2017-01-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多