搜尋技術:Elasticsearch的安裝步驟和使用
普通的資料庫搜尋的缺陷
類似:select * from 表名 where 欄位名 like ‘%關鍵字%’
例如:select * from article where content like ’%here%’
結果: where here
1、因為沒有通過高效的索引方式,所以查詢的速度在大量資料的情況下是很慢。
2、搜尋效果比較差,只能對使用者輸入的完整關鍵字首尾位進行模糊匹配。使用者搜尋的結果誤多輸入一個字元,可能就導致查詢出的結果遠離使用者的預期。
1. 搜尋技術
1.1 搜尋引擎的種類
搜尋引擎按照功能通常分為垂直搜尋和綜合搜尋。
1、垂直搜尋是指專門針對某一類資訊進行搜尋。例如:會搜網 主要做商務搜尋的,並且提供商務資訊。除此之外還有愛看圖示網、職友集等。
2、綜合搜尋是指對眾多資訊進行綜合性的搜尋。例如:百度、谷歌、必應、搜狗、360搜尋等。
1.2 倒排索引
倒排索引又叫反向索引(右下圖)以字或詞為文件中出現的位置情況。
它是搜尋引擎的基礎,如果沒有它,就不會有搜尋引擎
在實際的運用中,我們可以對資料庫中原始的資料結構(左圖),在業務空閒時事先根據左圖內容,建立新的倒排索引結構的資料區域(右圖)。
使用者有查詢需求時,先訪問倒排索引資料區域(右圖),得出文件id後,通過文件id即可快速,準確的通過左圖找到具體的文件內容。
總結:什麼是倒排索引?搜尋引擎的原理?elasticsearch的原理?lucene的原理?
答:在存文件的時候,將資料進行分詞,並記錄每個分詞下的文件編號,查詢的通過分詞找到對應的倒排列表的資料
實現了倒排索引的技術有哪些?
- lucene *
- solr
- elasticsearch
2.Elasticsearch介紹和安裝
2.2.安裝和配置
2.2.1 下載
下載地址:https://www.elastic.co/downloads/past-releases
2.2.2 安裝
elasticsearch無需安裝,解壓即用。
es:瀏覽器訪問:9200
程式碼訪問:9300
2.3.執行
進入elasticsearch/bin目錄,可以看到下面的執行檔案:
雙擊執行
可以看到綁定了兩個埠:
- 9300:java程式訪問的埠
- 9200:瀏覽器、postman訪問介面
我們在瀏覽器中訪問:http://127.0.0.1:9200
2.4.安裝Head外掛
2.4.1.什麼是Head
ealsticsearch只是後端提供各種api,那麼怎麼直觀的使用它呢?elasticsearch-head將是一款專門針對於elasticsearch的客戶端工具,類似mysql的sqlyog或者navicat
elasticsearch-head配置包,下載地址:https://github.com/mobz/elasticsearch-head
2.4.2.安裝
- es5以上版本安裝head需要安裝node和grunt
第一步:從地址:https://nodejs.org/en/download/ 下載相應系統的msi,雙擊安裝。
第二步:安裝完成用cmd進入安裝目錄執行 node -v可檢視版本號
第三步:執行 npm install -g grunt-cli 安裝grunt ,安裝完成後執行grunt -version檢視是否安裝成功,會顯示安裝的版本號
第四步:進入elasticsearch-head資料夾,執行npm install命令
第五步:執行head外掛,下面命令二選一
- 命令一:npm run start
- 命令二:grunt server
第六步:
2.4.3.配置執行
第一步:進入es安裝目錄下的config目錄,修改elasticsearch.yml檔案.在檔案的末尾加入以下程式碼
http.cors.enabled: true
http.cors.allow-origin: "*"
node.master: true
node.data: true
然後去掉network.host: 192.168.0.1的註釋並改為network.host: 0.0.0.0,去掉cluster.name;node.name;http.port的註釋(也就是去掉#)
第二步:雙擊elasticsearch.bat重啟es
2.5.安裝ik分詞器
ElasticSearch 預設採用分詞器, 單個字分詞 ,效果很差
搜尋【IK Analyzer 3.0】
http://www.oschina.net/news/2660
Lucene的IK分詞器早在2012年已經沒有維護了,現在我們要使用的是在其基礎上維護升級的版本,並且開發為Elasticsearch的整合外掛了,與Elasticsearch一起維護升級,版本也保持一致,最新版本:6.2.4
2.5.1.下載
原始碼下載地址:https://github.com/medcl/elasticsearch-analysis-ik/tree/6.2.x
jar包下載地址:https://github.com/medcl/elasticsearch-analysis-ik/releases
每個es版本對應的ik分詞器jar包下載位置:https://github.com/medcl/elasticsearch-analysis-ik/releases
使用ik分詞器的時候,一定要下載對應es版本的jar包
2.5.2.安裝
無需安裝,解壓即可使用
我們將其改名為ik
,並複製到elasticsearch的解壓目錄,如下圖所示
然後重啟elasticsearch:
2.5.3.擴充套件詞和停用詞
擴充套件詞和停用詞檔案:
###2.5.4 測試