精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

91麻豆视频网站| 伊人激情综合| 欧美日韩国产一级片| 一区二区在线观看网站| 99riav国产| 9久re热视频在线精品| 亚洲男人天堂网站| 免费网站在线观看黄| 91www在线| 国产精品免费视频一区| 国产不卡一区二区在线观看| 免费又黄又爽又猛大片午夜| 永久91嫩草亚洲精品人人| 日韩成人在线视频网站| 制服丝袜中文字幕第一页| 国产免费拔擦拔擦8x高清在线人| 亚洲国产岛国毛片在线| 国产精品免费在线播放| 这里只有精品6| 国产一级一区二区| 久久香蕉国产线看观看av| 国产精品久久久久久亚洲色| 91精品福利观看| 一本大道久久a久久综合| 亚洲天堂第一区| 国产1区2区3区在线| 豆国产96在线|亚洲| 国产日韩精品在线| 免费的毛片视频| 激情欧美日韩| 欧美日韩国产成人高清视频| 中文字幕欧美激情极品| 尤物tv在线精品| 欧美精品一区二区久久久| www.亚洲自拍| 国产精品美女午夜爽爽| 欧美性猛交xxxx黑人猛交| 日韩精品一区二区三区四| 国产激情视频在线观看| 国产精品国产三级国产普通话三级| 超碰国产精品久久国产精品99| 在线观看日韩一区二区| 天堂影院一区二区| 欧美在线免费观看| 丰满少妇乱子伦精品看片| 黄色在线一区| 欧美激情亚洲精品| 亚洲国产成人精品综合99| 99久久综合| 俺去了亚洲欧美日韩| 国产亚洲精品精品精品| 欧洲乱码伦视频免费| 亚洲网址你懂得| 在线不卡av电影| 国产精品欧美日韩一区| 亚洲男人天堂古典| 亚洲成人黄色av| 国产一区99| 一本色道久久综合狠狠躁篇的优点| 亚洲精品国产一区黑色丝袜| 国产精品三级| 中文国产成人精品久久一| av电影在线不卡| 欧美hentaied在线观看| 日韩在线视频国产| 中文字幕无码日韩专区免费| 亚洲国产精品91| 欧美精品亚州精品| 久久精品视频国产| 99精品热6080yy久久| 欧美一级电影在线| 最新中文字幕免费| 精品一区在线看| 99热国产免费| 日本人妖在线| 国产精品久久久久影院老司| 黄色免费高清视频| 人人超在线公开视频| 午夜精品久久久久久久蜜桃app| aa视频在线播放| 日韩成人影音| 制服丝袜亚洲播放| 99re这里只有| 欧美丝袜激情| 欧美国产第一页| 亚洲天堂一区在线| 开心九九激情九九欧美日韩精美视频电影| 国产日韩专区在线| 成人av免费播放| 91蜜桃免费观看视频| 亚洲看片网站| 欧美1234区| 91传媒视频在线播放| 中文字幕成人免费视频| 久久久久观看| 日韩在线免费视频| 日本熟妇毛耸耸xxxxxx| 日韩中文字幕不卡| 99re视频在线观看| 成人免费高清在线播放| 一区二区三区蜜桃| 在线视频日韩一区| 动漫视频在线一区| 中文在线资源观看视频网站免费不卡| 91视频免费在线看| 可以免费看不卡的av网站| 91免费精品国偷自产在线| 亚洲欧洲成人在线| 亚洲蜜臀av乱码久久精品| 成人免费观看视频在线观看| 精品午夜视频| 一区二区三区视频免费| 久久精品国产亚洲av无码娇色| 免费在线看成人av| 久久精品综合一区| 麻豆av在线播放| 欧美探花视频资源| 亚洲国产果冻传媒av在线观看| 天天做天天爱天天爽综合网| 国产999在线观看| 性生活视频软件| 中文字幕一区二区三区在线不卡| 波多野结衣家庭教师在线| 激情五月综合婷婷| xvideos亚洲| 人人妻人人爽人人澡人人精品| 成+人+亚洲+综合天堂| 可以免费看的黄色网址| 国产美女久久| 国产亚洲精品va在线观看| 久久久久久久久久久久久久av| 国产精品18久久久久久久久| 一本久久a久久精品vr综合| 亚洲伊人av| 日韩精品久久久久| jizz国产免费| www.日本不卡| 国产中文字幕二区| 澳门成人av| 欧美激情第6页| 国产视频手机在线观看| 自拍av一区二区三区| 激情黄色小视频| 99精品视频精品精品视频| 国产精品久久久久久亚洲影视| 久久电影中文字幕| 一本大道久久a久久精品综合| 成人无码www在线看免费| 国产亚洲毛片| 日韩国产精品一区二区| 国产另类xxxxhd高清| 亚洲性夜色噜噜噜7777| 最新黄色网址在线观看| 国产精品欧美一级免费| 亚洲这里只有精品| 国产精品毛片一区二区在线看| 国产女人精品视频| 久草中文在线| 欧美r级在线观看| 日韩精品一区二区三| 91视频精品在这里| 日韩福利视频在线| 日韩国产欧美| 91精品国产91久久久久青草| 18+视频在线观看| 精品国产污污免费网站入口| 日韩av无码中文字幕| 久久只精品国产| 欧美第一页浮力影院| 在线成人直播| 国产欧美日本在线| 偷拍精品精品一区二区三区| 少妇高潮久久久久久潘金莲| 国产女人18毛片18精品| 亚洲一区二区3| 国产精品1000部啪视频| 免费一级片91| 欧美亚洲色图视频| 国产精品探花在线观看| 国产日韩欧美视频在线| 女囚岛在线观看| 亚洲欧洲成视频免费观看| 中文字幕在线观看视频一区| 一区二区三区在线视频免费观看| 一本加勒比波多野结衣| 蜜桃精品视频在线| 香港三级日本三级a视频| 久草在线成人| 99久久99久久精品国产片| 原纱央莉成人av片| 久久精品电影网| 手机亚洲第一页| 欧美一区二区在线视频| 国产免费av一区| 一区二区三区四区不卡在线 | 一本色道久久88亚洲精品综合| 成人动态视频| 国产在线拍偷自揄拍精品| аⅴ资源天堂资源库在线| 日韩亚洲欧美中文在线| 日韩一级中文字幕| 欧美日韩mp4| 精产国品一区二区| 亚洲一级二级三级在线免费观看| 亚洲一区二区自偷自拍| 成人精品一区二区三区四区| 91插插插插插插插插| 亚洲三级色网| 伊人网在线免费| 成人在线免费观看视频| 国产一区二区三区无遮挡| av成人在线网站| 国产精品99久久99久久久二8| 第一中文字幕在线| 久久精品视频在线观看| 黄色大片在线看| 亚洲国产日韩欧美在线动漫| 国产成人三级在线播放| 欧美性色综合网| 亚洲影院在线播放| 图片区日韩欧美亚洲| 九九视频免费看| 亚洲欧美一区二区在线观看| 久久精品—区二区三区舞蹈 | 精品蜜桃一区二区三区| 欧美9999| 91在线视频一区| 日韩欧国产精品一区综合无码| 国产成人午夜视频网址| 中国色在线日|韩| 97超碰国产精品女人人人爽| 高h视频在线播放| 欧美黄色片免费观看| 黄色一级片在线观看| 色琪琪综合男人的天堂aⅴ视频| 麻豆av电影在线观看| 日韩精品免费一线在线观看| 欧美 日韩 综合| 欧美精品一区二区三区一线天视频| 国内精品国产成人国产三级| 制服丝袜中文字幕亚洲| 国产chinasex对白videos麻豆| 欧美军同video69gay| 一级黄色片在线观看| 欧美色综合久久| 在线视频 中文字幕| 欧美日韩激情一区二区三区| 亚洲天堂中文在线| 欧美精品久久一区二区三区| 91福利在线观看视频| 3751色影院一区二区三区| 97久久人国产精品婷婷| 欧美一区二区不卡视频| www.五月激情| 亚洲成人免费在线视频| 天堂а在线中文在线无限看推荐| 国产偷亚洲偷欧美偷精品| 女人偷人在线视频| 亚洲午夜av久久乱码| 午夜免费视频在线国产| 久久天天躁狠狠躁夜夜躁| 日韩三级电影视频| 韩国美女主播一区| 成人在线爆射| 成人综合网网址| 538任你躁精品视频网免费| 国内成+人亚洲| 精品一区二区三区在线| 青春草在线视频免费观看| 亚洲国产91| 999香蕉视频| 久久69国产一区二区蜜臀| 最新日本中文字幕| 久久久久免费观看| 麻豆一区在线观看| 一区二区久久久久久| 欧美videossex极品| 欧美性色黄大片手机版| 性做久久久久久久久久| 亚洲欧洲美洲在线综合| 黄色网页在线看| 91精品国产高清自在线| 日韩成人综合网站| 国产精品久久久久免费| 欧美亚洲高清| 日本欧美视频在线观看| 日本特黄久久久高潮 | 91免费观看在线| 日韩福利小视频| 黑人精品xxx一区一二区| 亚洲性生活大片| 亚洲第一天堂av| 国产在线高清视频| 国产91精品久久久| 国产精品3区| 欧美三日本三级少妇三99| 2023国产精品久久久精品双| 国产精品免费观看久久| 国产精品99久久久久久宅男| 三级网站在线免费观看| 夜夜嗨av一区二区三区中文字幕| 日韩精品成人免费观看视频| 欧美一级日韩免费不卡| 国产在线你懂得| 久久人人爽人人| 亚洲精品第一| 欧美精品久久| 亚洲国产免费| 五月天国产视频| 国产精品日韩精品欧美在线| 日韩欧美激情视频| 欧美一区二区三区白人| аⅴ资源新版在线天堂| 欧美一区二区三区精品电影| 蜜桃精品一区二区三区| 亚洲一区二区免费视频软件合集 | 红桃视频一区二区三区免费| 久久婷婷国产综合国色天香| 麻豆成人在线视频| 91精品国产色综合久久| seseavlu视频在线| 欧美在线一级视频| 日韩丝袜视频| 国产一级爱c视频| 成人综合在线观看| 综合五月激情网| 91精品国产色综合久久| 日本激情在线观看| 国产精品视频久| 欧美日韩一二三四| 女性隐私黄www网站视频| 99精品国产热久久91蜜凸| 国产亚洲欧美久久久久| 欧美一区二区三区四区久久| 黄色一级片在线观看| 成人国产精品日本在线| 久久久五月天| 国产又粗又长又爽又黄的视频| 亚洲婷婷综合色高清在线| 97人妻人人澡人人爽人人精品| 最新国产成人av网站网址麻豆| 精品国产欧美日韩一区二区三区| 日韩不卡av| 秋霞电影一区二区| 91香蕉国产视频| 欧美精品一二三| 超碰在线免费播放| 91精品久久香蕉国产线看观看| 亚洲大全视频| av影片在线播放| 亚洲国产欧美日韩另类综合| 蜜臀av在线观看| 性色av香蕉一区二区| 色婷婷综合久久久久久| 国产淫片免费看| 国产亚洲欧美日韩在线一区| 最近日韩免费视频| 久青草国产97香蕉在线视频| 欧美国产亚洲精品| 欧洲精品一区二区三区久久| 99久久国产综合精品麻豆| 伊人手机在线视频| 亚洲女在线观看| 国产精品亚洲成在人线| www.18av.com| 91香蕉视频污在线| 91porny九色| 久久久国产精品免费| 超碰成人免费| 一本色道无码道dvd在线观看| 中文字幕在线观看不卡| 亚洲卡一卡二卡三| 日本午夜在线亚洲.国产| 成人在线一区| 91精品人妻一区二区三区四区| 午夜日韩在线电影| 二区在线观看| 成人91视频| 日韩电影在线免费看| 午夜国产福利一区二区| 亚洲精品国产综合久久| 99久久er| 国产美女主播在线播放 | 日本a级片视频| 亚洲精品二三区| 四虎国产精品永久在线国在线| 男人日女人视频网站| 国产精品毛片久久久久久| 国产成人三级在线观看视频| 国产精品成人v| 欧美日本精品| 少妇视频在线播放| 日韩av在线一区二区| 亚洲欧美专区| 播放灌醉水嫩大学生国内精品| 亚洲欧洲日产国产综合网| 日韩av成人| 99久久国产免费免费| 久久激情综合网| 9i看片成人免费看片|