由于Titan docs,我已设法在嵌入模式下使用弹性搜索设置Titan(v0.3.1)。但是,我现在的问题是:如何利用ES索引?
例如,我想使用Text.CONTAINS
(根据上面链接的文档支持)。具体来说,我想在名为"abc"
的键的值的某处检索字符串为my_label
的节点。
从Gremlin控制台实现这一目标的语法是什么?
答案 0 :(得分:3)
以下查询将使用Elasticsearch后端:
g.query().has('my_label',CONTAINS,'abc').edges()
通常,任何包含三个参数的has
查询都将使用您的外部索引后端(Elasticsearch或Lucene)。
以下查询将执行完全匹配:
g.query().has('my_label','abc').edges()
graph.makeType().name("my_label").dataType(String.class).indexed("elastic", Vertex.class).unique(Direction.OUT).makePropertyKey();
添加Titan本机索引和外部索引之间的主要区别是indexed(..)
调用中的第二个参数,它指示应将您的属性编入索引的外部索引的名称。
不幸的是,现在,一旦某个属性存在某个键,您就无法在该键上添加索引;你必须从一个新的图表开始。
Titan文档很容易阅读: https://github.com/thinkaurelius/titan/wiki/Indexing-Backend-Overview
(奖金: Titan正在扩展,以包含其他类型的部分搜索,包括前缀和正则表达式:https://github.com/thinkaurelius/titan/pull/311)