簡體   English   中英

Tinkerpop API 在從 Titan 檢索數據時不使用混合彈性搜索索引

[英]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()) 文檔中列出了許多需要考慮全文搜索的問題:

  • 字符串被標記為一個詞袋,允許用戶有效地查詢包含一個或多個詞的所有匹配項。
  • Titan 的默認標記化將字符串拆分為非字母數字字符並刪除任何少於 2 個字符的標記。
  • 索引后端在圖形查詢中僅支持全文搜索謂詞。 [ textContains , textContainsPrefix , textContainsRegex ]
  • 全文搜索不區分大小寫。

您的查詢正在嘗試進行相等比較,因此Mapping.STRINGMapping.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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM