Я пытаюсь перенести свое приложение Neo4J на Titan, и у меня возникли некоторые проблемы, связанные с индексами. Я так понимаю, что Титан не поддерживает индексы вершин и ребер, а только "ключевые" индексы, верно?
Я также работаю с моделями лампочек, например:
class Person(Node):
element_type = 'person'
facebook_id = String(indexed=True)
При добавлении Person(facebook_id='111') должно быть возможно получить, используя:
gremlin> g.getVertices('facebook_id', '111')
Это не работает и говорит мне, что мне нужно создать ключевой индекс перед его использованием. Поэтому я удалил пространство ключей и вручную создал индекс в собачьей конуре rexster:
gremlin> g.createKeyIndex("facebook_id", Vertex.class);
После этого создал Person(facebook_id='111') с Bulbs и попытался получить на rexster doghouse:
gremlin> g.getVertices("facebook_id", "111")
И получил пустой ответ. При извлечении с использованием идентификатора вершины Titan это работает, но «facebook_id» оказывается пустым, а «.map ()» не работает:
gremlin> g.v(4)
==>v[4]
gremlin> g.v(4).name
==>Renato Garcia Pedigoni
gremlin> g.v(4).facebook_id # nothing returned!
gremlin> g.v(4).map()
==>javax.script.ScriptException: java.lang.IllegalArgumentException: The value is already used by another vertex and the key is unique
PS
- Это первая вершина, которую я создал после удаления пространства ключей.
- Можно ли автоматически создавать индексы ключей?
Какие-нибудь советы?
Спасибо!
Ренато Педигони