1. 程式人生 > >搜尋技術:Elasticsearch的安裝步驟和使用

搜尋技術: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的原理?

答:在存文件的時候,將資料進行分詞,並記錄每個分詞下的文件編號,查詢的通過分詞找到對應的倒排列表的資料

實現了倒排索引的技術有哪些?

  1. lucene *
  2. solr
  3. 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.namenode.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 測試

在這裡插入圖片描述