如何在Titan Gremlin查询中使用ElasticSearch索引?
我已经成功地在嵌入式模式下通过弹性搜索设置了Titan(v0.3.1),这要归功于。然而,我现在的问题是:如何利用ES索引 例如,我想使用如何在Titan Gremlin查询中使用ElasticSearch索引?,gremlin,titan,Gremlin,Titan,我已经成功地在嵌入式模式下通过弹性搜索设置了Titan(v0.3.1),这要归功于。然而,我现在的问题是:如何利用ES索引 例如,我想使用Text.CONTAINS(根据上面链接的文档,这是受支持的)。具体地说,我希望在名为my_label的键的值中的某个位置检索字符串为“abc”的节点 从Gremlin控制台使用什么语法可以实现这一目标?根据外部索引进行搜索 以下查询将使用Elasticsearch后端: g.query().has('my_label',CONTAINS,'abc').edg
Text.CONTAINS
(根据上面链接的文档,这是受支持的)。具体地说,我希望在名为my_label
的键的值中的某个位置检索字符串为“abc”的节点
从Gremlin控制台使用什么语法可以实现这一目标?根据外部索引进行搜索
以下查询将使用Elasticsearch后端:
g.query().has('my_label',CONTAINS,'abc').edges()
通常,任何包含三个参数的has
查询都将使用外部索引后端(Elasticsearch或Lucene)
以下查询将执行精确匹配:
g.query().has('my_label','abc').edges()
将属性键放入外部索引
添加Titan本机索引和外部索引之间的关键区别在于索引(..)
调用中的第二个参数,该参数指示应在其中索引属性的外部索引的名称
不幸的是,现在,一旦存在具有某个键的属性,就不能在该键上添加索引;你必须从一个新的图表开始
更多信息
Titan文档非常容易阅读:
(奖金:Titan正在扩展,以包括其他类型的部分搜索,包括前缀和regexp:)谢谢,@jkschneider。很高兴看到新的搜索功能即将推出&感谢您对一个伟大项目的贡献。快速跟进:我如何将
my_标签
明确添加到ES索引中(或者我需要添加)?我发现,一旦使用my_label
属性创建顶点,您上面提到的3参数语法就会返回无效的数据类型,条件是:class java.lang.Object
。索引将这样创建(请参见“索引后端概述”文档页面):graph.makeType().name(“my_label”).dataType(String.class).indexed(“elastic”,Vertex.class).unique(Direction.OUT).makePropertyKey()
不幸的是,现在,一旦存在具有某个键的属性,就不能在该键上添加索引;你必须从一个新的图表开始。我一直在考虑改变这一点,但你必须想象一下,动态添加索引会使外部索引在追赶时比正常情况下更加不一致。这正是我想要的!再次感谢。
graph.makeType().name("my_label").dataType(String.class).indexed("elastic", Vertex.class).unique(Direction.OUT).makePropertyKey();