elasticsearch的dsl搜索(1)

1. 準備索引庫

在這裏插入圖片描述

2. 錄入數據

以此類推,錄入3條數據,本文舉一個例子:
在這裏插入圖片描述
在這裏插入圖片描述

3. match

  • match: 先對詞條進行分詞,分詞後的任一詞語出現在當前字段中就可以查詢到

查詢desc屬性中含有天氣的文檔
在這裏插入圖片描述
結果如下,找出了id爲1003的文檔:
在這裏插入圖片描述

4. match_all與from、size

查詢所有文檔
在這裏插入圖片描述
查詢所有文檔,返回指定字段
在這裏插入圖片描述
查詢所有文檔,返回指定字段,並且從第0個文檔開始,查詢3個文檔
在這裏插入圖片描述

5. term、terms和match

match會把輸入的詞條進行分詞,比如輸入“很喜歡”,會把這個詞分爲“很喜歡”和“很”、“喜歡”,查詢結果如下,會命中兩個文檔
在這裏插入圖片描述
term的意思是,不對輸入的詞條進行分詞,比如輸入“很喜歡”,就只是匹配含有關鍵字“很喜歡”的文檔,查詢結果如下,只有一個文檔匹配到
在這裏插入圖片描述
如果一次性匹配多個不需要分詞的詞條,查詢方法如下,帶有“很喜歡”和“天氣”的文檔會被找到
在這裏插入圖片描述

6. match_phrase和match

  • match_phrase:先對詞條進行分詞,分詞後的詞語必須都包含在當前字段中,並且這個詞條必須連貫,纔可以查詢到,比如:“喜歡學習”可以查詢到一個文檔,“我學習”查詢不到,因爲中間空了“喜歡”這個詞,不夠連貫。
    查詢desc字段中“喜歡“、“學習”連個詞語都包含的文檔
    在這裏插入圖片描述
    如果就想查詢不連貫的詞條,可以使用slop字段,slop等於1,表示允許跳過一個詞,以此類推。如下所示,slop等於1,就跳過了“喜歡”這個詞,查詢到了一個文檔。當然slop等於2及以上,也是可以查詢到這個文檔
    在這裏插入圖片描述
  • match: 先對詞條進行分詞,分詞後的任一詞語出現在當前字段中就可以查詢到
    查詢desc字段中“喜歡“、“學習”連個詞語包含任一其一的文檔
    在這裏插入圖片描述

7. operator、minimum_should_match和ids

operator用來控制match中詞條匹配的詞語,operator爲and的時候表示要查詢的文檔必須包好詞條分詞後的所有詞語,operator爲or的時候表示包含其中一個;

operator爲and
在這裏插入圖片描述
operator爲or
在這裏插入圖片描述
minimum_should_match表示最小匹配到的分詞數百分比,意思是分詞後的詞語滿足匹配到的百分比,只有滿足了這個比例的文檔才能被查詢出來
在這裏插入圖片描述
ids表示根據id的數組進行查詢
在這裏插入圖片描述

8. multi_match和boost

multi_match區別於match,匹配的是多個字段中包含的詞語
在這裏插入圖片描述
同時,在多個字段匹配的時候,可以在某個字段中加入^+數字來提升某個字段的權重
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章