2013-08-29 4 views
0

У меня Titan 0.3.2 работает во встроенном режиме, и вы можете создавать и запрашивать индексы ElasticSearch через оболочку Gremlin (see previous question). Я использую конфигурацию по умолчанию, которая вызывает индекс ES «поиск».Querying Titan ElasticSearch backend через Rexster

Эти поиски возвращают правильные узлы без ошибок с помощью оболочки 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 нуждается в дополнительной информации об индексировании бэкэнда, возможно, в его файле конфигурации (я использую стандартный, включенный в установку). Кто-нибудь знаком с этой проблемой? Рад предоставить дополнительную информацию.

ответ

2

Возможно, у вас есть смесь вещей, но главное, что с 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

+0

Stephen, еще раз спасибо за вашу помощь. Я надеюсь, что некоторые из этих вопросов будут полезны для будущих пользователей Titan. Полностью квалифицированные 'CONTAINS' работали, как вы описали. Однако мой конфигурационный файл Titan точно соответствует файлу, к которому вы привязаны, и ES работает правильно, когда я запрашиваю Titan через оболочку Gremlin. Если проблема не является специфичной для Rexster, почему я вижу, что «Индекс неизвестен или не настроен: поиск» при запросе через RexPro, но не через оболочку Gremlin? – bcm360

+0

Я просто имел в виду, что проблема не связана с rexster.xml, который вы кормите на titan.sh. Вероятно, это связано с созданием вашего индекса или файла 'titan-server-cassandra-es.properties'. Я смог восстановить эту ошибку, указав «titan-server-cassandra.properties» в отличие от 'titan-server-cassandra-es.properties' в моем вызове' titan.sh'. Когда поиск эластичности не настроен, кажется, что вы получаете эту ошибку, если пытаетесь использовать создателя типа для графика. –

+0

Вы абсолютно правы, что возникла проблема с моим пакетным скриптом.Кажется, что Titan не читал файлы конфигурации, которые я ему передал, но оболочка гремлина смогла выяснить индекс elasticsearch из-за конфигурационного файла 'cassandra-es.local' (предоставленного в' g = TitanFactory.open ("Кассандры es.local") '). Еще раз спасибо. – bcm360