我目前有一个在本地 Cassandra 后端上运行 Titan 的 VM,并且希望能够使用 ElasticSearch 使用 CONTAINS 匹配项和正则表达式来索引字符串。这是我到目前为止所拥有的:
在 titan.sh 运行之后,一个 Groovy 脚本用于从单独的顶点和边缘文件中加载数据。该脚本的第一阶段从 Titan 加载图形并设置 ES 属性:
config.setProperty("storage.backend","cassandra") config.setProperty("storage.hostname","127.0.0.1")
config.setProperty("storage.index.elastic.backend","elasticsearch") config.setProperty("storage.index.elastic.directory","db/es") config.setProperty("storage.index.elastic.client -only","false") config.setProperty("storage.index.elastic.local-mode","true")
脚本的第二部分设置索引类型:
g.makeKey("property").dataType(String.class).indexed("elastic",Edge.class).make();
第三部分从 CSV 文件中加载数据,这已经过测试并且工作正常。
我的问题是,当我进行 Gremlin 查询时,我似乎无法使用 ElasticSearch 功能。例如:
g.E.has("property",CONTAINS,"test")
返回 0 结果,即使我知道该字段包含该属性的字符串“test”至少一次。更奇怪的是,当我将 CONTAINS 更改为 ElasticSearch 无法识别的内容时,我收到“没有此类属性”错误。我还可以执行精确的字符串匹配和任何数值比较,包括大于或小于,但是我希望在这些实例中使用默认索引方法而不是 ElasticSearch。
由于在我尝试运行更高级的 ES 查询时没有错误,我不知道是什么导致了这里的问题。有什么我可能错过的吗?
谢谢,亚当