2

感谢Titan 文档,我已经设法在嵌入式模式下使用 Elastic Search 设置 Titan (v0.3.1) 。但是,我现在的问题是:如何利用 ES 索引?

例如,我想使用Text.CONTAINS(根据上面链接的文档,这是受支持的)。具体来说,我想检索带有字符串的节点,该字符串"abc"位于名为my_label.

什么语法可以从 Gremlin 控制台实现这个目标?

4

1 回答 1

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 )

于 2013-08-17T01:13:48.147 回答