1. 程式人生 > >elasticsearch使用總結以及使用過程中的坑

elasticsearch使用總結以及使用過程中的坑

who:誰發明了它

就是下面這位大哥 Shay Banon

What:elasticsearch是什麼

elasticsearch開源並且免費(很關鍵)的全文檢索和分析的引擎,可以快速儲存,搜尋資料,還可以科學的分析資料

然額,elasticsearch本質上就是一個分散式的資料庫,允許多臺伺服器協同工作,每臺伺服器可以執行多個elasticsearch例項,單個的elasticsearch例項就是一個節點 node ,一組節點構成cluster叢集

隱藏luence 複雜性,提供簡單易用的restful api介面、java api介面(還有其他語言的api介面)

why:我們為什麼使用它

首先咱們瞭解一下資料庫的搜尋場景

1、比方說,每條記錄的指定欄位的文字,可能會很長,比如說“商品描述”欄位的長度,有長達數千個,甚至數萬個字元,這個時候,每次都要對每條記錄的所有文字進行掃描,來判斷說,你包不包含我指定的這個關鍵詞(比如說“牙膏”)

2、還不能將搜尋詞拆分開來,儘可能去搜索更多的符合你的期望的結果,比如輸入“生化機”,就搜尋不出來“生化危機”

再來看看咱們的elasticsearch

下面的圖我找的 ,講的很清晰

具體說說elasticsearch的好處

① 分詞搜尋,全文檢索,不會在出現資料庫的對文字一個一個掃描,它直接就通過節點的索引進行搜

② 自己維護冗餘備份資料,某些機器宕機了,不會丟失資料

③ 當然還有強大搜索功能,聚合分析的功能

④ 結合kibana 還能進行建立圖表,給各位展示科學化的業務資料,更好的分析業務

⑤ 免費的不要錢而且聽說永久免費!

⑥提供了java api介面 java是世界上最好的語言

⑦ 提供了Restful api介面 大家都可以訪問

⑧請求和應答全是json的資料格式

where:elasticsearch使用場景

數字、文字、地理位置、結構化、非結構化。所有的資料型別都歡迎。

應用搜索、安全分析或是日誌分析只是全球眾多公司利用 Elasticsearch 解決各種挑戰的冰山一角

專案的搜尋功能,比如說搜尋課後作業,,比如課程資源 等,

日誌的分析基本上是ELK的一套做一些圖表等

更多的使用場景可以看看這個部落格

when:什麼時候使用它

對於搜尋比較頻繁的應用,我個人覺得對於有很多很多的資料的時候就可以用它,比如資源搜尋

然後還可以為咱們做日誌分析

下面的連結是我在有道雲上筆記

Linux 部署 配置elasticsearchl全文檢索服務

附:開發過程中遇到的坑

第一個就是使用什麼辦法解析,剛開始找了很多種方式,最後在官網找到了使用jestClient的方法

query拼接起來去執行

第二個就是解析查詢出來的資料的時候很坑,本來想自動解析,但是型別轉換不過來,因為我這裡的實體類使用的java的語法的型別,但是elasticsearch有它自己的型別,所以最後選擇了手動解析資料查出來這些資料

第三個坑就是剛開始的時候引入的依賴一定要注意點,經常會出現版本不對,而且我上面提出的三個依賴全部引入,springboot才能正確執行沒有bug