閱讀640 返回首頁    go 阿裏雲 go 技術社區[雲棲]


《深入理解Elasticsearch(原書第2版)》一2.2.2 回到Apache Lucene

本節書摘來華章計算機《深入理解Elasticsearch(原書第2版)》一書中的第2章 ,第2.2.2節,[美]拉斐爾·酷奇(Rafal Ku) 馬雷克·羅戈任斯基(Marek Rogoziski)著 張世武 餘洪淼 商旦 譯 更多章節內容可以訪問雲棲社區“華章計算機”公眾號查看。

2.2.2 回到Apache Lucene

現在我們回到Lucene。如果你還記得Lucene倒排索引是如何構建的,你會指出倒排索引中包含了詞項、詞頻以及文檔指針(如果忘了,請重新閱讀1.1節)。現在我們看看之前存儲到clients索引中的數據大概是如何組織的。

image


Term這一列非常重要。如果我們去探究Elasticsearch和Lucene的內部實現,將會發現前綴查詢被改寫為下麵這種查詢:
image

我們可以用Elasticsearch API來檢查重寫片段。首先,使用Explain API執行如下命令:
image

執行結果如下:
image

可以看到,Elasticsearch對name字段使用了一個詞項是joe的constant_score查詢。當然,這一步發生在Lucene中,Elasticsearch實際上隻是從緩存中獲取這些詞項。這一點可以用Validate查詢API來驗證。
image
image

Elasticsearch返回的結果如下:
image

最後更新:2017-06-23 23:35:25

  上一篇:go  Gradle創建Spring Boot項目——1配置
  下一篇:go  《深入理解Elasticsearch(原書第2版)》一2.2.1 前綴查詢示例