首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Tinkerpop在从巨人检索数据时不使用混合elasticsearch索引

Tinkerpop在从巨人检索数据时不使用混合elasticsearch索引
EN

Stack Overflow用户
提问于 2016-03-07 11:26:10
回答 2查看 380关注 0票数 2

Tinkerpop在从titan检索数据时不使用混合elasticsearch索引。不过,如果我们直接使用titan API,它确实使用了混合elasticsearch索引。

例如,我在name上创建了一个混合索引。

当我们使用tinkerpop API:graph.iterator().V().has("name", "Apple")时,它没有在"name“上使用混合索引,并给出了一个警告日志‘查询需要遍历所有顶点’。

对于titan API,它工作得很好,并在"name“上使用混合索引,如下所示

代码语言:javascript
复制
titanGraph.query().has("name", "Apple").vertices()

这可能是什么原因呢?

EN

回答 2

Stack Overflow用户

发布于 2016-03-08 02:10:22

这是在TinkerPop mailing list上交叉发布的

首先,如果您正在进行精确的字符串匹配,那么composite index似乎可以做得很好。

您应该在“第20章.索引参数和全文搜索”中查看Titan docs。不带映射参数的addKey(name)时,字符串键的混合索引默认为全文搜索-- addKey(name, Mapping.TEXT.asParameter())。在使用全文搜索时,文档中列出了许多需要考虑的陷阱:

  • 字符串被标记化为一个词包,允许用户有效地查询包含一个或多个单词的所有匹配。
  • Titan的默认标记化将字符串拆分为非字母数字字符,并删除任何少于2个Titan全文搜索谓词的标记索引后端在图形查询中支持。search,textContainsRegex
  • Full-text search is case-insensitive.

textContainstextContainsPrefix,search is case-insensitive.

您的查询正在尝试进行等于比较,因此Mapping.STRINGMapping.TEXTSTRING可能更合适。

我创建了一对科学家来比较不同的版本。您可以将这些示例剪切并粘贴到Gremlin控制台中。

土卫六0.5.4 https://gist.github.com/pluradj/ff1e1b1bcea0753adbb1

Titan 1.0.0 https://gist.github.com/pluradj/9bf96f8eae9fa24f3d61

请注意,此行为在Titan 0.5.4和1.0.0之间没有变化,因此我不确定您的示例之前为什么有效。

票数 2
EN

Stack Overflow用户

发布于 2016-04-18 16:37:06

混合ES索引存在问题。在ES中更新/创建数据时存在延迟。因此,如果创建了一条记录,然后立即通过混合索引键进行查询,我们就得不到它。请参考Titan 1.0[Berkeley+ES] - Delayed update of ES index

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35835681

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档