Tinkerpop在从titan检索数据时不使用混合elasticsearch索引。不过,如果我们直接使用titan API,它确实使用了混合elasticsearch索引。
例如,我在name上创建了一个混合索引。
当我们使用tinkerpop API:graph.iterator().V().has("name", "Apple")时,它没有在"name“上使用混合索引,并给出了一个警告日志‘查询需要遍历所有顶点’。
对于titan API,它工作得很好,并在"name“上使用混合索引,如下所示
titanGraph.query().has("name", "Apple").vertices()这可能是什么原因呢?
发布于 2016-03-08 02:10:22
这是在TinkerPop mailing list上交叉发布的
首先,如果您正在进行精确的字符串匹配,那么composite index似乎可以做得很好。
您应该在“第20章.索引参数和全文搜索”中查看Titan docs。不带映射参数的addKey(name)时,字符串键的混合索引默认为全文搜索-- addKey(name, Mapping.TEXT.asParameter())。在使用全文搜索时,文档中列出了许多需要考虑的陷阱:
textContainsRegex,textContains,textContainsPrefix,search is case-insensitive.
您的查询正在尝试进行等于比较,因此Mapping.STRING或Mapping.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之间没有变化,因此我不确定您的示例之前为什么有效。
发布于 2016-04-18 16:37:06
混合ES索引存在问题。在ES中更新/创建数据时存在延迟。因此,如果创建了一条记录,然后立即通过混合索引键进行查询,我们就得不到它。请参考Titan 1.0[Berkeley+ES] - Delayed update of ES index
https://stackoverflow.com/questions/35835681
复制相似问题