Titan Db игнорируя индекс

У меня есть график с парой индексов. Это два составных индекса с ограничениями надписей. (оба одинаковы только для разных свойств / меток). Один, безусловно, работает, а другой нет. Я сделал следующий профиль () для двойной проверки:

Один называетсяKeyOnNode : имуществоuid и этикеткаnode :

gremlin> g.V().hasLabel("node").has("uid", "xxxxxxxx").profile().cap(...)
==>Traversal Metrics
Step                                                               Count  Traversers       Time (ms)    % Dur
=============================================================================================================
TitanGraphStep([~label.eq(node), uid.eq(dammit_...                     1           1           2.565    96.84
  optimization                                                                                 1.383
  backend-query                                                        1                       0.231
SideEffectCapStep([~metrics])                                          1           1           0.083     3.16
                                            >TOTAL                     -           -           2.648        -

Вышеуказанное вполне приемлемо и работает хорошо. Я предполагаю, что волшебная линияbackend-query.

Другой называетсяNameOnSuperNode : имуществоname и этикеткаsupernode:

gremlin> g.V().hasLabel("supernode").has("name", "xxxxxxxx").profile().cap(...)
==>Traversal Metrics
Step                                                               Count  Traversers       Time (ms)    % Dur
=============================================================================================================
TitanGraphStep([~label.eq(supernode), name.eq(n...                     1           1        5763.163   100.00
  optimization                                                                                 2.261
  scan                                                                                         0.000
SideEffectCapStep([~metrics])                                          1           1           0.073     0.00
                                            >TOTAL                     -           -        5763.236        -

Здесь запрос занимает огромное количество времени, и у нас естьscan линия. Сначала я задавался вопросом, не был ли индекс зафиксирован через систему управления, но, увы, кажется, что следующее работает просто отлично:

gremlin> m = graphT.openManagement(); 
==>com.thinkaurelius.titan.graphdb.database.management.ManagementSystem@73c1c105
gremlin> index = m.getGraphIndex("NameOnSuperNode")
==>NameOnSuperNode
gremlin> index.getFieldKeys()
==>name
gremlin> import static com.thinkaurelius.titan.graphdb.types.TypeDefinitionCategory.*
==>null
gremlin> sv = m.getSchemaVertex(index)
==>NameOnSuperNode
gremlin> rel = sv.getRelated(INDEX_SCHEMA_CONSTRAINT, Direction.OUT)
==>com.thinkaurelius.titan.graphdb.types.SchemaSource$Entry@26b2b8e2
gremlin> sse = rel.iterator().next()
==>com.thinkaurelius.titan.graphdb.types.SchemaSource$Entry@2d39a135
gremlin> sse.getSchemaType()
==>supernode

Я не могу просто сбросить БД на данный момент. Любая помощь в определении проблем может быть поразительной, я бью стену здесь. Это признак того, что мне нужно переиндексировать?

ИНФОРМАЦИЯ: Titan DB 1.1 (TP 3.1.1)

ура

ОБНОВИТЬ : Я обнаружил, что рассматриваемый индекс не находится вREGISTERED государство:

gremlin> :> m = graphT.openManagement(); index = m.getGraphIndex("NameOnSuperNode"); pkey = index.getFieldKeys()[0]; index.getIndexStatus(pkey)
==>INSTALLED

Как мне получить его для регистрации? я пробовалm.updateIndex(index, SchemaAction.REGISTER_INDEX).get(); m.commit(); graphT.tx().commit(); но, похоже, ничего не делает

ОБНОВЛЕНИЕ 2: Я попытался восстановить индекс, чтобы переиндексировать следующее:

gremlin> m = graphT.openManagement(); 
index = m.getGraphIndex("NameOnSuperNode") ; 
import static com.thinkaurelius.titan.graphdb.types.TypeDefinitionCategory.*; 
import com.thinkaurelius.titan.graphdb.database.management.ManagementSystem; 
m.updateIndex(index, SchemaAction.REGISTER_INDEX).get();
ManagementSystem.awaitGraphIndexStatus(graphT, "NameOnSuperNode").status(SchemaStatus.REGISTERED).timeout(20, java.time.temporal.ChronoUnit.MINUTES).call();
m.commit();
graphT.tx().commit()

Но это не работает. У меня все еще есть мой индекс вINSTALLED статус, и я все еще получаю тайм-аут. Я проверил, что не было открытых транзакций. У кого-нибудь есть идея? К вашему сведению, график работает на одном сервере и имеет ~ 100К вершин и ~ 130К ребер.

Ответы на вопрос(2)

Ваш ответ на вопрос