我正在运行 Titan 0.4.0 并尝试使用最新的REGEX
运算符进行 ES 字符串搜索。
我my_key
为我的 ES 索引创建了一个名为search
.
gremlin> g.makeKey("my_key").dataType(String.class).indexed("search",Vertex.class).single().make()
==>v[82]
然后我添加一个顶点:
gremlin> v = g.addVertex(null, ["my_key":"123-abc"])
==>v[8]
gremlin> v.map
==>{my_key=123-abc}
似乎REGEX
工作...
gremlin> g.query().has("my_key", REGEX, "[12]{2}3").vertices()
==>v[8]
...但仅在我的标记化"123"
和"abc"
独立上:
gremlin> g.query().has("my_key", REGEX, "123").vertices()
==>v[8]
gremlin> g.query().has("my_key", REGEX, "abc").vertices()
==>v[8]
但是,如果我尝试运行与我的完整值匹配的正则表达式,则不会检索到我的顶点(以下均未返回结果):
gremlin> g.query().has("my_key", REGEX, "123-abc").vertices()
gremlin> g.query().has("my_key", REGEX, "123.abc").vertices()
gremlin> g.query().has("my_key", REGEX, "[0-9]+.[abc]{3}").vertices()
gremlin> g.query().has("my_key", REGEX, "123.").vertices()
Titan中有没有办法以这种方式查询索引(正则表达式不带标记/分析的术语)?