精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Elasticsearch實現MySQL的Like效果

數據庫 MySQL
隨著數據量的不斷增加,Mysql在處理模糊搜索時可能面臨性能瓶頸。因此,引入Elasticsearch(ES)作為搜索引擎,以提高搜索性能和用戶體驗成為一種合理的選擇。

在Mysql數據庫中,模糊搜索通常使用LIKE關鍵字。然而,隨著數據量的不斷增加,Mysql在處理模糊搜索時可能面臨性能瓶頸。因此,引入Elasticsearch(ES)作為搜索引擎,以提高搜索性能和用戶體驗成為一種合理的選擇。

一、客戶的訴求

在ES中,影響搜索結果的因素多種多樣,包括分詞器、Match搜索、Term搜索、組合搜索等。有些用戶已經養成了在Mysql中使用LIKE進行模糊搜索的習慣。若ES返回的搜索結果不符合用戶的預期,可能會引發抱怨,甚至認為系統存在Bug。

誰讓客戶是上帝,客戶是金主爸爸呢,客戶有訴求,我們就得安排上。下面我們就聊聊如何用ES實現Mysql的like模糊匹配效果。

二、短語匹配match_phrase

1.定義

為實現模糊匹配的搜索效果,通常有兩種方式,其中之一是match_phrase,先說說match_phrase。

match_phrase短語匹配會對檢索內容進行分詞,要求這些分詞在被檢索內容中全部存在,并且順序必須一致。默認情況下,這些詞必須是連續的。

2.實驗

場景1:創建一個mapping,采用默認分詞器(即每個字都當做分詞),然后插入兩條數據。注意:被搜索的字段先采用text類型。

# 創建mapping,這里的customerName先使用text類型
PUT /search_test
{
  "mappings": {
    "properties": {
      "id": {
        "type": "keyword"
      },
      "customerName": {
        "type": "text"
      }
    }
  },
  "settings": {
    "number_of_shards": 5,
    "number_of_replicas": 1
  }
}

# 插入2條數據
PUT /search_test/_create/1
{
  "id": "111",
  "customerName": "都是生產醫院的人"
}

PUT /search_test/_create/2
{
  "id": "222",
  "customerName": "家電清洗"
}

# match_phrase短語匹配查詢,可以查出結果
POST search_test/_search
{
  "from": 0,
  "size": 10,
  "query": {
    "bool": {
      "must": [
        {
          "match_phrase": {
            "customerName": "醫院的"
          }
        }
      ]
    }
  }
}

以上操作結果顯示可以查詢到數據。如下圖:

場景2:創建一個mapping,采用默認分詞器,然后插入兩條數據。注意:被搜索的字段先采用keyword類型。

# 創建mapping,這里的customerName先使用text類型
PUT /search_test2
{
  "mappings": {
    "properties": {
      "id": {
        "type": "keyword"
      },
      "customerName": {
        "type": "keyword"
      }
    }
  },
  "settings": {
    "number_of_shards": 5,
    "number_of_replicas": 1
  }
}

# 插入2條數據
PUT /search_test2/_create/1
{
  "id": "111",
  "customerName": "都是生產醫院的人"
}

PUT /search_test2/_create/2
{
  "id": "222",
  "customerName": "家電清洗"
}

# match_phrase短語匹配查詢,可以查出結果
POST search_test2/_search
{
  "from": 0,
  "size": 10,
  "query": {
    "bool": {
      "must": [
        {
          "match_phrase": {
            "customerName": "醫院的"
          }
        }
      ]
    }
  }
}

以上操作結果顯示查不到數據。如下圖:

3.小結

match_phrase短語匹配適用于text類型的字段,實現了類似Mysql的like模糊匹配。然而,它并不適用于keyword類型的字段。

三、通配符匹配Wildcard

為實現模糊匹配的搜索效果,Wildcard通配符匹配是另一種常見的方式。下面我們詳細介紹wildcard通配符查詢。下面接著說Wildcard通配符查詢。

1.定義

Wildcard Query 是使用通配符表達式進行查詢匹配。Wildcard Query 支持兩個通配符:

  • ?,使用 ? 來匹配任意字符。
  • *,使用 * 來匹配 0 或多個字符。

使用示例:

POST search_test/_search
{
  "query": {
    "wildcard": {
      "customerName": "*測試*"
    }
  }
}

2.實驗

場景1:創建一個mapping,采用默認分詞器,然后插入兩條數據。注意:被搜索的字段先采用text類型。使用上文已經創建的索引search_test。

# wildcard查詢
POST search_test/_search
{
  "from": 0,
  "size": 10,
  "query": {
    "bool": {
      "must": [
        {
          "wildcard": {
            "customerName": {
              "value": "*醫院的*"
            }
          }
        }
      ]
    }
  }
}

以上操作結果顯示查不到數據,如下圖:

注意:如果將DSL查詢語句改成只查“醫”,就可以查到數據,這與分詞器有關。默認分詞器將每個字都切成分詞。

# Wildcard查詢
POST search_test/_search
{
  "from": 0,
  "size": 10,
  "query": {
    "bool": {
      "must": [
        {
          "wildcard": {
            "customerName": {
              "value": "*醫*"
            }
          }
        }
      ]
    }
  }
}

場景2:創建一個mapping,采用默認分詞器,然后插入兩條數據。注意:被搜索的字段先采用keyword類型。使用上文已經創建的索引search_test2。

POST search_test2/_search
{
  "from": 0,
  "size": 10,
  "query": {
    "bool": {
      "must": [
        {
          "wildcard": {
            "customerName": {
              "value": "*醫院的*"
            }
          }
        }
      ]
    }
  }
}

以上操作結果顯示可以查到數據,如下圖:

3.小結

Wildcard通配符查詢適用于keyword類型的字段,實現了類似Mysql的like模糊匹配。然而,它不太適用于text類型的字段。

四、選擇分詞器

上述實驗中均使用了默認分詞器的結果。接下來,我們嘗試使用IK中文分詞器進行實驗。

1.實驗

創建一個名為search_test3的mapping,采用IK中文分詞器,然后插入兩條數據。注意:被搜索的字段先采用text類型。

PUT /search_test3
{
  "mappings": {
    "properties": {
      "id": {
        "type": "keyword"
      },
      "customerName": {
        "type": "text",
        "analyzer": "ik_max_word",
        "search_analyzer": "ik_smart"
      }
    }
  },
  "settings": {
    "number_of_shards": 5,
    "number_of_replicas": 1
  }
}

PUT /search_test3/_create/1
{
  "id": "111",
  "customerName": "都是生產醫院的人"
}

PUT /search_test3/_create/2
{
  "id": "222",
  "customerName": "家電清洗"
}

執行搜索,比如搜索“醫院的”,無論是match_phrase還是wildcard兩種方式都查不到數據。

POST search_test3/_search
{
  "from": 0,
  "size": 10,
  "query": {
    "bool": {
      "must": [
        {
          "match_phrase": {
            "customerName": "醫院的"
          }
        }
      ]
    }
  }
}

POST search_test3/_search
{
  "query": {
    "bool": {
      "must": [
        {
          "wildcard": {
            "customerName": {
              "value": "*醫院的*"
            }
          }
        }
      ]
    }
  },
  "from": 0,
  "size": 20
}

執行搜索,比如搜索“醫院”,match_phrase和wildcard兩種方式都可以查到數據。

POST search_test3/_search
{
  "from": 0,
  "size": 10,
  "query": {
    "bool": {
      "must": [
        {
          "match_phrase": {
            "customerName": "醫院"
          }
        }
      ]
    }
  }
}

POST search_test3/_search
{
  "query": {
    "bool": {
      "must": [
        {
          "wildcard": {
            "customerName": {
              "value": "*醫院*"
            }
          }
        }
      ]
    }
  },
  "from": 0,
  "size": 20
}

4.小結

無論是match_phrase還是wildcard兩種方式,它們的效果與選擇的分詞器密切相關。因為兩者都是對分詞進行匹配,只有匹配到了分詞,才能找到對應的文檔。

如果搜索內容正好命中了對應的分詞,就可以查詢到數據。如果沒有命中分詞,則查不到。在遇到問題時,可以使用DSL查詢查看ES的分詞情況:

POST _analyze
{  
    "analyzer": "ik_smart",
    "text": "院的人"  
}
POST _analyze
{  
    "analyzer": "ik_smart",
    "text": "醫院的"  
}

POST _analyze
{  
    "analyzer": "ik_max_word",
    "text": "都是生產醫院的人"  
}

五、總結

match_phrase和wildcard都能實現類似Mysql的like效果。然而,需要注意以下幾點:

  • 如果要完全實現Mysql的like效果,最好使用默認分詞器,即每個字都切成分詞。
  • match_phrase短語匹配,適合于text類型的字段。
  • Wildcard通配符查詢,適合于keyword類型的字段。
責任編輯:趙寧寧 來源: 不焦躁程序員
相關推薦

2009-08-14 11:24:10

MySQL全文檢索MySQL Like索

2024-07-03 08:02:19

MySQL數據搜索

2017-02-06 13:00:49

Android翻轉卡片動畫效果

2012-06-14 15:49:59

Slider

2011-07-08 10:15:15

IPhone 動畫

2021-01-19 12:16:10

CSS前端UI

2020-09-28 15:34:38

ElasticSear索引MySQL

2010-09-07 15:54:47

SQL語句LIKE

2022-12-12 11:11:05

2015-07-23 15:15:06

動態彈出

2011-05-04 09:05:39

Flash

2024-05-30 08:23:37

ViewPager滑動效果接口

2022-03-11 07:22:20

CSS陰影基礎前端

2009-09-03 16:50:35

C#鼠標形狀

2010-09-13 14:09:35

CSS文字

2023-03-28 08:05:37

2009-09-23 17:19:19

jQuery頁面漸顯效

2012-05-17 13:17:26

HTML5

2024-08-01 10:10:24

MySQL場景搜索

2024-04-15 00:08:00

MySQLInnoDB數據庫
點贊
收藏

51CTO技術棧公眾號

亚洲成在人线免费| 香蕉亚洲视频| 欧美一级黄色录像| 800av在线免费观看| 亚洲av无码乱码在线观看性色| 欧美一区精品| 亚洲精品ady| 国产无套内射久久久国产| 久久精品蜜桃| 国内久久精品视频| 久久免费福利视频| www.黄色在线| 久久久久久亚洲精品美女| 亚洲成人精品影院| 日本精品一区| 99久久精品国产色欲| 一区二区国产精品| 综合av色偷偷网| av在线天堂网| 日韩一区精品| 亚洲综合精品自拍| 日韩.欧美.亚洲| www.五月激情| 视频一区二区三区中文字幕| 久久精品国产一区二区电影| 男男做爰猛烈叫床爽爽小说 | jizz久久久久久| 亚洲人精品一区| 亚洲女厕所小便bbb| 在线观看亚洲视频| 精品国产aⅴ一区二区三区东京热| 蜜桃av.网站在线观看| 国产精品麻豆一区二区 | 国产成人在线视频观看| 久久中文字幕av一区二区不卡| 精品久久免费看| 天天天干夜夜夜操| 日韩影院免费视频| 精品欧美国产一区二区三区| 日韩高清国产精品| 亚洲精品视频专区| 精品一区中文字幕| 国产成人在线精品| 日本在线视频免费观看| 99re66热这里只有精品8| 日韩高清免费在线| 亚洲熟妇一区二区| 日本成人一区二区| 在线观看91精品国产入口| 全黄性性激高免费视频| 国产美女av在线| 国产精品视频一二| 欧美日韩综合久久| 天天干天天操av| 国产精品亚洲а∨天堂免在线| 国产精品久久激情| 亚洲成人av网址| 香蕉成人久久| 欧美一区二区.| 日韩久久久久久久久| 女主播福利一区| 色99之美女主播在线视频| 丰腴饱满的极品熟妇| 天海翼亚洲一区二区三区| 亚洲第一网站男人都懂| 少妇熟女视频一区二区三区| 日本免费一区二区视频| 91精品国产日韩91久久久久久| 欧美成年人视频在线观看| 精品国模一区二区三区| 欧美中文字幕不卡| 精品少妇无遮挡毛片| 日韩pacopacomama| 一本一本大道香蕉久在线精品| 久久综合成人精品亚洲另类欧美 | 五月开心播播网| 日韩精品一级| 精品久久久久久久久久久久久久久 | 天堂av在线网站| 日韩中文影院| 在线观看av不卡| 久久这里只精品| 国产第一亚洲| 欧美一区二区三区喷汁尤物| 欧美一级大片免费看| 大伊香蕉精品在线品播放| 亚洲成人黄色在线| 国产肉体xxxx裸体784大胆| 婷婷亚洲精品| 正在播放欧美视频| 亚洲国产精品久| 亚洲天堂偷拍| 欧美自拍大量在线观看| 国产精品露脸视频| 国内成人精品2018免费看| 99精彩视频| 五月天久久久久久| 国产免费观看久久| 男插女免费视频| av中文资源在线资源免费观看| 一本色道久久综合狠狠躁的推荐| 看欧美ab黄色大片视频免费 | 国产在线观看91精品一区| 99热这里只有精品1| 成人看片黄a免费看在线| 蜜桃网站成人| 欧美日本高清| 亚洲成人在线网站| 天堂av在线网站| 亚洲码欧美码一区二区三区| 免费一级欧美在线大片| 欧美三级一区二区| 逼特逼视频在线观看| 九一精品国产| 欧美精品在线免费| caoporn国产| 国产一区视频在线看| 欧美精品国产精品久久久 | 伊人精品在线观看| 青春草免费视频| 亚洲永久免费| 91国产在线免费观看| 青青视频在线观| 亚洲视频一区二区免费在线观看| 无罩大乳的熟妇正在播放| 日韩美女在线| 亚洲男人天堂久| 天天综合天天做| 老司机精品导航| 国产精品一码二码三码在线| 麻豆传媒在线免费看| 欧美视频第一页| 国产欧美精品一二三| 国产探花一区在线观看| 久久久久久69| 亚洲影视一区二区| 久久精品亚洲精品国产欧美| 黄网站欧美内射| 精品久久国产一区| 国产午夜精品免费一区二区三区| 日韩福利片在线观看| 国产一区二区三区四区在线观看| 欧美精品成人一区二区在线观看| 2018av在线| 欧美一二三四区在线| 五月天精品在线| 久久蜜桃精品| 久久99国产精品| 超碰在线网站| 日韩一级高清毛片| 色在线观看视频| 精品在线免费视频| 亚洲精品成人三区| 日本一区二区三区视频在线| 亚洲男人天堂2019| 国外成人免费视频| 少妇高潮av久久久久久| 高清av一区二区| 日韩一二区视频| www一区二区三区| 色偷偷噜噜噜亚洲男人的天堂| 国内av在线播放| 国产亚洲精品中文字幕| 漂亮人妻被中出中文字幕| 老牛影视av一区二区在线观看| 久久久久久久久久久久久久久久久久av| 国产又黄又粗又长| 中文字幕一区二区三区四区不卡| www欧美激情| 99精品在线观看| 成人av在线天堂| 免费网站看v片在线a| 4438x亚洲最大成人网| 我要看黄色一级片| 国产精品一区二区男女羞羞无遮挡| 日韩精品第1页| 欧洲一区在线| 久久久久国产一区二区三区| 粉嫩av一区二区夜夜嗨| 午夜精彩视频在线观看不卡| 精品无码国产一区二区三区51安| 宅男噜噜噜66国产日韩在线观看| 欧美18视频| 欧美一级二级视频| 北条麻妃一区二区三区中文字幕| 国产欧美一级片| 一级做a爱片久久| jjzzjjzz欧美69巨大| 亚洲综合国产| 先锋影音亚洲资源| 精品国产乱码一区二区三区| 97精品一区二区视频在线观看| 香蕉久久国产av一区二区| 在线视频欧美精品| 极品魔鬼身材女神啪啪精品| 成人午夜精品在线| 男人天堂999| 国产精品99一区二区三| 国产精品一区二区三区四区五区| xxxxxx欧美| 日韩在线欧美在线国产在线| 蜜臀av在线观看| 91极品视觉盛宴| 免费中文字幕在线| 91网页在线观看| 亚洲欧美在线另类| 五月天激情小说| 日本视频一区二区| 丁香婷婷综合激情| 国产日产精品一区二区三区四区的观看方式| 国产精品主播视频| 成人bbav| 久久黄色av网站| 日本加勒比一区| 欧美三级电影网| 久视频在线观看| 国产女人18毛片水真多成人如厕| 国产sm在线观看| 日本免费新一区视频| www.亚洲视频.com| 99久久99热这里只有精品| 久久久av水蜜桃| 精品视频在线观看免费观看 | 91国产免费看| 日本少妇毛茸茸高潮| 国产精品久久久久久久久图文区 | 国产午夜精品无码| 国产精品欧美一区二区三区| 亚洲第一黄色网址| 国产一区不卡精品| 日本a√在线观看| 亚洲第一毛片| 久久久久久久久网| 成人女性视频| 欧美精品亚洲| 美女av一区| www.久久久| 亚洲国产91视频| 国产精品扒开腿做| 日本免费久久| 97久久精品国产| 欧美黑人猛交的在线视频| 色悠悠久久久久| 成人免费在线观看| 亚洲男人7777| 五月婷中文字幕| 精品国产乱码久久久久久闺蜜 | aa国产精品| 日韩在线视频在线| 欧美日韩蜜桃| 超碰97在线看| 亚洲午夜精品一区二区国产| 亚洲欧美99| 成人在线亚洲| 四虎永久国产精品| 欧美日韩在线观看视频小说| 久久综合久久久| 亚洲第一福利专区| 久久久久久一区| 欧美大胆视频| 国产伦精品一区二区三区照片 | 国产精品传媒精东影业在线| 亚洲欧洲日韩综合二区| 欧美日韩中文字幕一区二区三区| 欧美一级爱爱| 国产精品亚洲片在线播放| 欧美日韩一区二区视频在线观看 | 国产精品一区二区三区不卡 | 国产精品乱码一区二三区小蝌蚪| 在线不卡av电影| 91免费观看视频在线| a毛片毛片av永久免费| 国产日韩欧美精品在线| 亚洲女人毛茸茸高潮| 亚洲桃色在线一区| 欧美精品一区二区成人| 亚洲国产精品麻豆| 羞羞影院体验区| 色综合久久中文综合久久牛| 久久久久久亚洲av无码专区| 精品视频在线视频| 国产毛片在线视频| 亚洲第一男人天堂| 国产九色在线| 久久精品国产96久久久香蕉| 中文av资源在线| 久久久久久尹人网香蕉| xxxxx性欧美特大| 国产精品十八以下禁看| 亚洲专区**| 久久精品国产精品国产精品污| 欧美色婷婷久久99精品红桃| 日本一区二区免费高清视频| 国产精品vip| 精品久久久久av| 美女视频网站久久| 26uuu国产| 久久精品视频免费| 成人免费视频网站入口::| 欧美日韩午夜视频在线观看| 伊人色综合久久久| 337p日本欧洲亚洲大胆色噜噜| 九色在线播放| 美女久久久久久久久久久| 三级在线看中文字幕完整版| 国产成人在线一区| 亚洲欧美日本国产| 日本高清视频一区二区三区| 一区二区在线| 白嫩少妇丰满一区二区| 国产一区二区三区免费在线观看| 亚洲最大免费视频| 亚洲色图欧美激情| 亚洲天堂一区在线| 欧美一区二区三区影视| 欧美色18zzzzxxxxx| 久久影院模特热| 国产精品亚洲一区二区三区在线观看| 成人9ⅰ免费影视网站| 精品视频亚洲| 成人午夜视频在线观看免费| 麻豆国产精品官网| 丰满大乳奶做爰ⅹxx视频| 亚洲男人的天堂av| 亚洲综合成人av| 亚洲国产高清福利视频| 国产在线69| 国产精品视频资源| 偷拍亚洲精品| 国产精品久久久久9999爆乳| 久久国内精品自在自线400部| asian性开放少妇pics| 亚洲综合久久久| 国产内射老熟女aaaa∵| 国产一区二区三区毛片| 日本乱码一区二区三区不卡| 97超级碰碰| 欧美国产美女| 久久久久久久久久久久91| 2021中文字幕一区亚洲| 五月天婷婷网站| 欧美一区二区三区人| 日本美女在线中文版| 国产精品久久久久久av下载红粉 | 亚洲男子天堂网| 91豆花视频在线播放| 91成人理论电影| 雨宫琴音一区二区三区| 久久久久久蜜桃一区二区| 久久久三级国产网站| 在线观看黄网站| 日韩国产精品亚洲а∨天堂免| 黄色大片在线| 国产精品国产三级欧美二区 | 免费视频爱爱太爽了| 国产精品1区2区3区| 农村黄色一级片| 91精品国产欧美一区二区成人| 成人在线观看亚洲| 91免费国产视频| 91精品国产自产在线观看永久∴| 手机视频在线观看| 欧美国产精品久久| 在线观看日韩一区二区| 中国人与牲禽动交精品| 成人国产精品| 伊人色综合久久天天五月婷| 久久电影网站中文字幕| 97在线观看视频免费| 制服丝袜中文字幕亚洲| 高h视频在线观看| 波多野结衣成人在线| 日韩午夜av在线| 青青草福利视频| 在线看国产一区| 色大18成网站www在线观看| 成人在线视频福利| 欧美日韩日本国产亚洲在线| 稀缺呦国内精品呦| 欧美日韩国产一区二区| 九色在线观看| 成人激情电影一区二区| 综合激情婷婷| 中文字幕一区二区久久人妻网站 | 亚洲三级 欧美三级| 欧美日韩五区| 亚洲精品天堂成人片av在线播放| 成人黄色综合网站| 日韩免费av网站| 播播国产欧美激情| 超碰cao国产精品一区二区| 欧美 丝袜 自拍 制服 另类| 欧美激情在线观看视频免费| 国产精品怡红院| 97精品伊人久久久大香线蕉| 精品久久美女| 一卡二卡三卡四卡五卡| 欧美性猛交xxx| 麻豆网在线观看| 精品视频第一区|