Опрос бэкэнда Titan ElasticSearch через Rexster

У меня есть Titan 0.3.2, работающий во встроенном режиме, и я смог создавать и запрашивать индексы ElasticSearch через оболочку Gremlin ( см. Предыдущий вопрос). Я использую конфигурацию по умолчанию, которая называет индекс ES "поиск".

Эти поиски возвращают правильные узлы без ошибок через оболочку Gremlin:

g.query().has('my_label','abc').vertices()
g.query().has('my_label',CONTAINS,'abc').vertices()

Однако, если я попытаюсь выполнить те же самые запросы Gremlin через RexPro, Rexster отправит обратно эту ошибку для первого запроса выше:

java.util.concurrent.ExecutionException: 
javax.script.ScriptException: 
javax.script.ScriptException: 
java.lang.IllegalArgumentException: Index is unknown or not configured: search

и это для второго:

java.util.concurrent.ExecutionException: 
javax.script.ScriptException: 
javax.script.ScriptException: 
groovy.lang.MissingPropertyException: No such property: CONTAINS for class: Script3

Точно так же, если я пытаюсь сделать запрос по индексируемому ключу через REST API (GET):

http://localhost:8182/graphs/graph/vertices?key=my_key&value=abc

Я получаю такой же ответ об ошибке:

{"message":"Index is unknown or not configured: search","error":"Index is unknown or not configured: search"}

Наконец, если я попытаюсь начать с чистой базы данных и запустить скрипт создания индекса через rexpro:

g.makeType().name("my_label").dataType(String.class).indexed("search", Vertex.class).unique(Direction.OUT).makePropertyKey();

Я вижу ту же неизвестную ошибку индекса:

java.util.concurrent.ExecutionException: 
javax.script.ScriptException: 
javax.script.ScriptException: 
java.lang.IllegalArgumentException: Index is unknown or not configured: search

Таким образом, похоже, что Rexster нужна дополнительная информация о бэкенде индексирования, возможно, в его файле конфигурации (я использую файл по умолчанию, включенный в установку). Кто-нибудь знаком с этой проблемой? Рад предоставить больше информации.

1 ответ

Решение

У вас может быть целый ряд вещей, но главное в том, что начиная с Titan 0.3.2, Rexster не импортирует классы Titan автоматически, поэтому вы не можете делать запросы с CONTAINS, Вам нужно указать полное имя пакета при этом:

com.thinkaurelius.titan.core.attribute.Text.CONTAINS

Я не могу точно сказать, что еще не так, но похоже, что индекс эластичного поиска настроен неправильно. Это не имеет ничего общего с файлом конфигурации Rexster для Titan Server. Это больше связано со вторым аргументом, который вы передаете titan.sh который содержит информацию о конфигурации Titan. Убедитесь, что эластичный поиск настроен правильно, как в этом файле, показанном здесь (по умолчанию при установке): https://github.com/thinkaurelius/titan/blob/master/config/titan-server-cassandra-es.properties

Другие вопросы по тегам