因為項目可能會用到es保存一些非結構化的數據,並從中檢索數據。對es調研了一下
從官網:https://www.elastic.co/downloads下載,解壓即安裝。
進入解壓目錄,執行bin目錄下elasticsearch命令即啟動。啟動后,可以在終端執行命令,校驗是否啟動成功
curl localhost:9200
{ "name" : "atntrTf", "cluster_name" : "elasticsearch", "cluster_uuid" : "tf9250XhQ6ee4h7YI11anA", "version" : { "number" : "5.5.1", "build_hash" : "19c13d0", "build_date" : "2017-07-18T20:44:24.823Z", "build_snapshot" : false, "lucene_version" : "6.6.0" }, "tagline" : "You Know, for Search" }
有類似以上輸出,說明es啟動成功。es是java開發的,需要安裝java運行環境。jdk或者jre
es有索引、類型、文檔這些概念。依次類似對應關系型數據庫的 數據庫、表、記錄。其實就是一個邏輯空間
創建索引命令
curl -X PUT 'localhost:9200/weather'
es提供了restful接口,-X表示http方法。具體可以了解下curl命令參數
新增一個文檔
$ curl -X PUT 'localhost:9200/accounts/person/1' -d ' { "user": "張三", "title": "工程師", "desc": "數據庫管理" }'
accounts為索引,person為type類型,1文檔id -d后面跟提交的數據,一般為json格式
當然還有其他增刪改查等restful接口。
總結
1. es是在lucene上封裝了一層
2. es類似一個分布式存儲和檢索系統
3. 數據通過分片存放到不同的分片上,每個分片可以有0到多個副本
4. ELK為es, lagstash類似flume一個agent收集日志信息, k為kibana一個web管理界面。這三個都安裝過,沒事可以玩一下
5. es提供了java客戶端以及rest客戶端,具體有什么區別待研究
6. es客戶端有可以在集群中扮演node角色的,不存數據。也有通過客戶端直接連集群機器的,不屬於集群
7. 節點類型有三個,主節點,數據節點, 客戶端節點
個人感覺 doc --> 分詞(ik等分詞插件) --> 倒排 --> 檢索
參考:http://www.ruanyifeng.com/blog/2017/08/elasticsearch.html
阮一峰的博客寫的很贊
es感覺還是很強大,es權威指南還沒翻譯完,開始賣了可以買一本看下,感覺寫的不錯