[英]Tinkerpop API does not use mixed elasticsearch index while retrieving data from titan
Tinkerpop API 在從 Titan 檢索數據時不使用混合彈性搜索索引。 雖然如果我們直接使用titan API,它確實使用了混合彈性搜索索引。
例如,我在名稱上創建了一個混合索引。
當我們使用 tinkerpop API 時: graph.iterator graph.iterator().V().has("name", "Apple")
,它不會在“name”上使用混合索引並給出警告日志“查詢需要迭代所有頂點” .
使用 Titan API,它可以正常工作並使用“名稱”上的混合索引,如下所示
titanGraph.query().has("name", "Apple").vertices()
這可能是什么原因?
這是在TinkerPop 郵件列表上交叉發布的
首先,如果您要進行精確的字符串匹配,似乎復合索引就可以了。
您應該查看第 20 章中的Titan 文檔。索引參數和全文搜索。 當您addKey(name)
沒有映射參數時,字符串鍵的混合索引將默認為全文搜索 - addKey(name, Mapping.TEXT.asParameter())
。 文檔中列出了許多需要考慮全文搜索的問題:
textContains
, textContainsPrefix
, textContainsRegex
] 您的查詢正在嘗試進行相等比較,因此Mapping.STRING
或Mapping.TEXTSTRING
可能更合適。
我創建了幾個要點來比較不同的版本。 您可以將這些示例剪切並粘貼到 Gremlin 控制台中。
泰坦 0.5.4 https://gist.github.com/pluradj/ff1e1b1bcea0753adbb1
泰坦 1.0.0 https://gist.github.com/pluradj/9bf96f8eae9fa24f3d61
請注意,此行為在 Titan 0.5.4 和 1.0.0 之間沒有改變,所以我不確定為什么您的示例以前有效。
混合 ES 索引存在問題。 在 ES 中更新/創建數據存在延遲。 因此,如果創建了一條記錄,然后立即通過混合索引鍵進行查詢,我們將無法取回它。 請參考Titan 1.0[Berkeley+ES] - ES 索引延遲更新
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.