而文檔在倒排索引中存儲的是什麽值呢?可以通過下面uri進行分析:
有上圖可知,倒排索引存儲的值實際上是 es 和 book ,而不是 es book 。
註意: 因為是默認被standard analyzer分詞器分詞,大寫字母全部轉為了小寫字母,並存入了倒排索引以供搜索。term是確切查詢, 所以傳入的條件要和倒排索引保持壹致。
需要註意的是,倒排索引中存儲的值為大寫的 ES BOOK 。
使用term查詢時,查詢條件不會進行分詞。但是 text 類型的數據,在倒排索引中實際存儲的是分詞的數據。
term條件的區分大小寫,而實際上,text數據經過默認的standard analyzer分詞器分詞,大寫字母全部轉為了小寫字母,並存入了倒排索引以供搜索。
故不推薦使用term去查詢text類型。
term去查詢keyword的數據,均不會進行分詞,但是需要註意大小寫
match查詢text類型時,其本質的操作為or。
可等效為:
並且match匹配時,底層分詞器會將條件轉換為小寫,故和text的倒排索引的大小寫保持壹致。即不區分大小寫。
上文說到,match默認使用or的操作。那麽如何替換為and操作?
查詢到的數據即包含JAVA 也要包含BOOK。
但是非精確匹配。
導入數據
再次執行時,依舊可以查詢到 JAVA AND NET BOOK 數據。
and操作,是要求倒排索引中即要包含 java 也需要包含 book 。
match查詢keyword操作時,等效term
當match查詢text類型時,在底層將會被轉換為term操作。
將被轉換為: