您好,登錄后才能下訂單哦!
本篇內容介紹了“es搜索優化和mysql查詢優化”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!
這周優化了我們沙抖官網搜索的功能,這個搜索目前是根據視頻標題進行匹配,之前是對用戶輸入的關鍵詞進行了分詞查找,比如用戶輸入【機器人】,這樣的話,只要視頻標題中有關鍵詞的任意一個字都會被搜到,比如含有【人】字的標題會展示出來,并可能排的很靠前,所以我就對當前的搜索進行了優化,現在搜索是優先進行相鄰短語查詢 match_phrase,如果相鄰短語查詢結果小于2個就進行普通的分詞查詢,這個相鄰短語查詢是要求在請求字符串中的所有查詢項必須都在文檔中存在,文中順序也得和請求字符串一致,且彼此相連。這樣查詢的話,標題中含有【機器人】的結果肯定在前。
修改后的查詢body體為:
{
"query": {
"bool": {
"filter": {
"match_phrase": {
"video_title": word
}
},
"must": {
"range": {
"video_date": {
"gte": "now-30d+8h",
"lte": "now+8h"
}
}
}
}
},
"sort": {
"video_like": {
"order": "desc"
}
},
"from": start,
"size": size,
"highlight": {
"pre_tags": [
"<strong style='color:red'>"
],
"post_tags": [
"</strong>"
],
"fields": {
"video_title": {
}
}
}
}
這周內我還對我們的數據表查詢進行了優化,加了普通索引和聯合索引,現在我們一個視頻數據表的數據量是幾百兆大小,根據視頻行業進行查詢時,mysql 響應速度在 600ms 左右,我對行業字段添加了普通索引,查詢響應在 30 ms 左右,前后對比優化結果還是很明顯的。我們還有根據視頻分類進行篩選的功能,視頻表的查詢條件經常用到視頻發布時間和視頻分類字段,我就給這倆加了聯合索引。添加聯合索引后,查詢速度也是在 30ms 左右。正如網友所說,如果正確設計并且使用索引 mysql 就是一輛蘭博基尼,否則的話它就是人力三輪車。
添加索引語句如下:
1.普通索引ALTER TABLE `aweme_data` ADD INDEX category_id_index ( `category_id` );2.添加聯合索引ALTER TABLE `aweme_data` ADD INDEX type_create_time ( `type_id`, `aweme_create_time`);
“es搜索優化和mysql查詢優化”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。