ES的基本概念
1> 叢集和節點
一個es叢集是由一個或多和es節點組成的集合

每一個叢集都有一個名字, 如之前的wali
每個節點都有自己的名字, 如之前的master, slave1, slave2
節點是可以存儲資料, 參與索引資料等的獨立服務
2> 索引(類似于資料庫裡面的database)
索引是含有相同屬性的文檔集合
索引在es中是通過一個名字來識别的, 必須是英文字母小寫, 且不含中劃線
3> 類型(相當于sql中的table)
一個索引可以定義一個或多個類型, 文檔必須屬于一個類型
4> 文檔(相當于sql中的一行記錄)
文檔是可以被索引的基本資料機關
5> 分片
每個索引都有多個分片, 每個分片都是一個luncene索引
分片的好處: 分攤索引的搜尋壓力, 分片還支援水準的拓展和拆分以及分布式的操作, 可以提高搜尋和其他處理的效率
6> 備份
拷貝一個分片就完成了分片的備份
備份的好處: 當主分片失敗或者挂掉, 備份就可以代替分片進行操作, 進而提高了es的可用性, 備份的分片還可以進行搜尋操作, 以分攤搜尋的壓力.
ES在建立索引時, 預設建立5個分片, 一份備份, 可以修改, 分片的數量隻能在建立索引的時候指定, 索引建立後就不能修改分片的數量了, 而備份是可以動态修改的
2.2 ES的基本用法
ES以RESTFul風格來命名API的, 其API的基本格式如下
http://<ip>:<port>/<索引>/<類型>/<文檔id>
ES的動作是以http方法來決定的: 常用的http方法: GET/PUT/POST/DELETE
Eg1, 建立索引, 結合head插件建立索引的執行個體
傳回”概覽”檢視建立情況
建立索引分為: 結構化建立與非結構化建立
檢視索引是否是結構化的方法
Mappings是結構化的一個關鍵詞, 其後内容是空的, 說明這個索引是一個非結構化的索引
建立結構化索引的方法
點選head插件的”複合查詢”
驗證json後, 送出請求,
傳回head插件”概覽檢視”
Head插件中編寫json發送請求比較複雜, 可以使用postman或者是fiddler等工具進行請求的發送
請求資料的json格式
{
"settings": {
"number_of_shards": 3,
"number_of_replicas": 1
},
"mappings": {
"man": {
"properties": {
"name": {
"type": "text"
},
"country": {
"type": "keyword"
"age": {
"type": "integer"
},
"date": {
"type": "date",
"format": "yyyy-MM-dd HH:mm:ss||yyyy:MM:dd||epoch_millis"
}
}
},
"woman": {}
}
}
2.2.1> 資料插入
文檔id, 唯一索引值, 指向文檔資料
2.2.1.1 指定文檔id插入
使用http中的put方法,
插入時輸入的ip位址, 如http://192.168.253.129:9200/people/man/1
請求參數依次為:索引名稱/類型名稱/文檔id
請求參數
"name": "瓦力",
"country": "China",
"age": 30,
"date": "1987-03-07 12:12:12"
Head插件中”資料浏覽”
2.2.1.2 自動産生文檔id插入
使用http中的post方法,
插入時輸入的ip位址, 如http://192.168.253.129:9200/people/man
"name": "超重瓦力",
"age": 40,
"date": "1977-03-07 12:12:12"
響應結果
2.2.2> 修改文檔資料
2.2.2.1 直接修改文檔
http方法: post方法
請求位址: http://192.168.253.129:9200/people/man/1/_update
關鍵詞: _update, doc
"doc": {
"name": "誰是瓦力"
“doc”為關鍵字, 要修改的文檔放在doc中, 執行個體修改了type為people索引下man中id為1 的name屬性
傳回的結果
可以在head插件中”資料浏覽”中驗證修改結果
2.2.2.2 腳本修改文檔
通過腳本修改的api格式與直接修改的是一緻的
"script": {
"lang": "painless",
"inline": "ctx._source.age += 30"
}
關鍵字”script”: 标志以腳本的方式修改文檔
“lang”: 表示以何種腳本語言進行修改, “painless”表示以es内置的腳本語言進行修改. 此外es還支援多種腳本語言, 如Python, js等等
“inline”:指定腳本内容 “ctx”代表es上下文, _source 代表文檔
可以在head插件中”資料浏覽”檢查修改資料
此外還有其他的參數設定方式, 例如将參數放到外面
"inline": "ctx._source.name = params.name; ctx._source.age = params.age",
"params": {
"age": 30,
"name": "誰是瓦力"
2.2.3> 删除
2.2.3.1 删除文檔
http方法: delete
請求路徑http://192.168.253.129:9200/people/man/1
2.2.3.1 删除索引
1. 可以通過head插件進行删除
2. 通過api删除
Http方法: delete
連結位址: http://192.168.253.129:9200/book