一:elasticsearch 是什麼
- elasticsearch 是一個高度可擴充套件的開開源的分散式 RESTful搜尋和分析引擎
- 它具有快速,近乎實時儲存,搜尋和分析大量資料
- 它通常作為一個基礎引擎技術為公司的搜尋中心專案所用
二:為什麼要學習elasticsearch
- 迄今為止最先進,效能最好,功能最全的搜尋引擎庫Lucene
- 分散式實時檔案儲存
- 支援橫向擴充套件和縱向擴充套件。不需要程式去關注這些。
三:elasticsearch幾個使用場景
- 如果你的公司有電商專案,可以使用elasticsearch儲存商品,目錄和庫存,為使用者提供搜尋和自動補全搜尋關鍵詞的功能。
- 如果你想收集資料和日誌資訊,並且通過這些資料找到趨勢,統計資訊,摘要和異常,可以使用Logstash(Elasticsearch/Logstash/Kibana 堆疊的一部分功能)去收集、解析和彙總資料。然後將這些資料放入elasticsearch中,我們就可以在elasticsearch挖掘我們想要的資料資訊。
- 全商品中心的商品降價推送。平臺可以抓取所有供應商的價格,將其推送的elasticsearch並使用倒排功能(Percolator)與使用者的查詢相匹配,匹配合適就可以推送給使用者購買。
- 使用Kibana(Elasticsearch/Logstash/Kibana stack)對elasticsearch儲存的資料自定義儀表板。使用elasticsearch的聚合功能對資料進行復雜的商業智慧查詢。
四:安裝es和Kibana
1:下載安裝,執行,不多介紹,預設執行地址:http://localhost:9200/
2:安裝Kibana,Kibana(sense)是一個和ES一起使用的開源分析和視覺化平臺。安裝成功後啟動 http://localhost:5601/app/sense
3:Kibana介面->dev_tools->控制檯,demo如下:查詢所有的資料
返回引數 | 含義 |
---|---|
took | 耗費時間(毫秒) |
time_out | 是否超時(預設無) |
_shards | 資料的分片,total:分片總數 successful:分片成功數 |
hits.total | 查詢結果集數量(多少個document) |
hits.max_score | 文件與查詢的匹配程度,越匹配分數越高 |
hits.hits | 返回文件資料詳情,是一個陣列,每個陣列包含排名前十的文件 |
_index | 文件儲存的地方 |
_type | 文件代表的物件的類 |
_id | 文件的唯一標識 |
_source | 儲存的json字串 |
五:ES的通訊
- java語言可以使用elasticsearch內建的兩個客戶端-節點客戶端和傳輸客戶端與es進行互動
- 其他的語言使用 RESTful API 通過埠和 Elasticsearch 進行通訊
- 也可以直接通過curl命令直接和es互動
六:資料
1:文件 (document)
ES面向文件的儲存方式。文件(document)是ES根物件(root object)序列化的資料,包含儲存的資料(_source)和其他的物件資訊。
2:索引(indexing)
- ES中儲存資料的行為就叫做索引,文件存在索引中,相當於關聯式資料庫的DB
- 也可以不單獨建立索引,直接建立文件,索引也直接建立
引數 | 含義 |
---|---|
hosjoy | 索引名 |
employee | 型別名 |
1 | 員工的id |
3:搜尋
-
直接搜尋,索引/型別/id
-
搜尋一個型別的全部資料,id替換為_search
-
匹配文件資料內容(查詢字串搜尋)q=
- DSL(Domain Specific Language特定領域語言)語句查詢
- 全文檢索
4:更新
- 直接可以根據索引id修改json值