ElasticSearch入門,仿京東搜索實戰
項目源碼已上傳至Github,點此訪問
項目介紹
此項目是跟隨狂神ES課程入門所做的SpringBoot+ES+Vue實戰項目,在視頻的基礎上,已實現前后端分離。功能比較簡單,實現的基本的爬取+儲存+搜索+高亮,未實現分頁,若對ES已有一定的基礎,可自己改進,也可發起PR,若發現問題,望及時提醒。
此項目涉及以下功能
- ES創建索引
- ES刪除索引
- ES批量插入文檔
- ES查詢並高亮顯示
- 最基礎的JAVA爬蟲(Jsoup)
- Vue基本操作
運行環境
- ElasticSearch 7.8.0
- kibana 7.8.0
- IK分詞器 7.8.0(可選)
- IDEA 2020.1.3
- Maven 3.6.9
- SpringBoot 2.3.1
前期准備
- 安裝ElasticSearch、Kibana、ik分詞器,注意這三個版本必須保持一致!
- 啟動ElasticSearch,端口 9200,9300
最終效果
同時支持中文搜索、英文搜索
注意事項
-
由於前后端分離,
Controller
上記得加注解@CrossOrigin(allowedHeaders = "*")
允許跨域。 -
安裝
IK
分詞器是為了解決中文查詢時,默認分詞器會將關鍵詞其分割,導致查詢不出結果。 -
此頁面是我在京東搜索原網頁的基礎上刪減得到的,所以可能有些多余的標簽,可以自己試着改,由於我對前端不太熟悉,所以並未有太多的刪減。
-
若
Jsoup
解析網頁出錯或未獲取到數據,最好打開瀏覽器開發者模式,通過檢查元素查看標簽結構,在控制台用JS
操作先試試能否獲取到結果,若發現與代碼中涉及的標簽和屬性等不一致,請自己修改。 -
京東頁面所用的
css
、js
包括一些圖片都是異步加載的,其中涉及到的css
和js
我自己下載好了,京東logo和購物車圖標的顯示也是http
請求獲取到的,不是本地圖標,這里我沒改是因為我用的VSCode,裝了插件LiveServer,所以能夠正常顯示,所以你能看到我的瀏覽器地址是 localhost:52330/itemlist.htm,而不是本地協議。 -
使用file協議也可正常運行,也就是直接選擇用瀏覽器打開itemlist.htm,功能不受影響,只不過可能就看不到logo,大概像這樣。