Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Titan Gremlin查询中使用ElasticSearch索引?_Gremlin_Titan - Fatal编程技术网

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

如何在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

我已经成功地在嵌入式模式下通过弹性搜索设置了Titan(v0.3.1),这要归功于。然而,我现在的问题是:如何利用ES索引

例如,我想使用
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();