背景
-
What:
ElasticSearch
是一個分佈式、RESTful風格的搜索和數據分析引擎。以下簡稱ES
。 -
Features: 具有近實時的全文檢索能力、極其方便的橫向擴展能力,怎麼理解呢?可以簡單理解爲快、有彈性。
-
Why: 我們知道要在傳統的RDBMS中做搜索,尤其是全文搜索時,我們的選擇基本就是
LIKE
,這在數據量大時,性能急劇下降;ES作爲MySQL等關係型數據庫的LIKE功能出現(當然這只是簡單的類比),基於Apache的Lucene
實現,提供RESTful風格的操作(增刪改查)。隨着ES生態的不斷繁榮,結合ELK
(ElasticSearch, Logstash, Kibana)技術棧,ES的口號除了全文檢索,又多了數據分析。是全文檢索、數據分析、統計展現的一把利器。
下載
到ElasticSearch官網,下載對應操作系統的版本:https://www.elastic.co/cn/start
我這裏是Windows版的,目前爲 7.5.2
,完成後解壓。
啓動
打開命令行,執行:
cd elasticsearch-7.5.2\bin
.\elasticsearch.bat
ES
默認在9200端口啓動,瀏覽器訪問:http://localhost:9200
此時,還可通過_cat/health
API 查看ES
節點的健康狀態:curl http://localhost:9200/_cat/health?v
可以看到節點基本信息及狀態:1個節點,11個分片等
注意這裏標出當前的
status
爲yellow
,ElasticSearch集羣健康狀態最佳時爲green
。現在是因爲我們僅啓動了一個節點,鑑於ElasticSearch
本身的橫向擴展能力即爲方便,實際生產環境中都是以集羣的方式提供服務,方便各節點間數據的同步以實現彈性可擴展,ES要求單節點的集羣狀態達不到green
,最佳只是yellow。當然,如果狀態爲red
,那就要引起注意了,集羣數據有問題了。。
測試
單節點的ES集羣跑起來了,那麼接下來就可以把玩一番了,增刪改查搞起來。剛開始建議用Postman
,或者在命令行直接發出curl
請求,方便上手,後期可以使用ELK技術棧中的Kibana
提供的開發工具執行DSL
。
以下以curl
爲例進行測試:
- 增
curl -X PUT "localhost:9200/movie/_doc/1?pretty" -H 'Content-Type: application/json' -d'{"name": "Fantasy Island"}'
- 查
curl -X GET "localhost:9200/movie/_doc/1?pretty"
- 改
curl -X PUT "localhost:9200/movie/_doc/1?pretty" -H 'Content-Type: application/json' -d'{"name": "JOKER"}'
curl -X GET "localhost:9200/movie/_doc/1?pretty"
- 刪
curl -X DELETE "localhost:9200/movie/_doc/1?pretty"
curl -X GET "localhost:9200/movie/_doc/1?pretty"
這裏僅是簡單的增刪改查,後續針對查詢分別介紹:簡單查詢、條件查詢、聚合查詢、複合查詢等。
If you have any questions or any bugs are found, please feel free to contact me.
Your comments and suggestions are welcome!