如何在Titan Gremlin查询中使用ElasticSearch索引?

时间:2013-08-12 16:09:44

标签: gremlin titan

由于Titan docs,我已设法在嵌入模式下使用弹性搜索设置Titan(v0.3.1)。但是,我现在的问题是:如何利用ES索引?

例如,我想使用Text.CONTAINS(根据上面链接的文档支持)。具体来说,我想在名为"abc"的键的值的某处检索字符串为my_label的节点。

从Gremlin控制台实现这一目标的语法是什么?

1 个答案:

答案 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