1. 創建索引
1.1 直接創建索引
可以直接使用head插件創建索引,指定分片數和備份數即可。如下圖:
1.2 創建結構化索引
上圖創建的索引,點開索引信息,mapping是空的,表示該索引的字段並沒有指定,我們可以在創建索引的時候直接指定其字段名來創建。
使用POSTMAN進行創建(任何工具都行,習慣)
請求路徑:localhost:9200/book --》ES服務的ip:端口/要創建的索引名,請求方法:PUT
請求體:
{ "settings":{ "number_of_shards":5, //分片數 "number_of_replicas":1 //備份數 },
//映射文件 "mappings":{
//類型名 "novel":{
//文檔的所有字段以及類型 "properties":{ "name":{ "type":"text" }, "author":{ "type":"keyword" }, "word_count":{ "type":"integer" }, "publish_date":{ "type":"date", "format":"yyyy-MM-dd HH:mm:ss || yyyy-MM-dd" //日期格式化允許的類型 } } } } }
插入結果如下:表示索引創建成功
{ "acknowledged": true, "shards_acknowledged": true, "index": "book" }
關於結構化索引和非結構化索引的區別:
結構化索引,類似MySQL,我們會對索引結構做預定義,包括字段名,字段類型等;那么,非結構化索引,就類似Mongo,索引結構未知,根據具體的數據來update索引的mapping。那么如何選擇兩種索引呢,還是跟具體的使用場景有關,結構化相比非結構化,更易優化,性能好些,非結構化相較靈活,只是頻繁update索引mapping會有一定的性能損耗。
重點:需要特別特別注意的是:如果你的索引后期要修改,那么你只能重建一個你要修改成的索引,然后將數據復制到新的索引中,代碼如下(親測可用)
http://localhost:9200/_reindex { "source": { "index": "old_index" }, "dest": { "index": "new_index" } }
2. 插入數據
2.1 指定id插入
需要注意的是:指定id插入,使用的方法時PUT,路徑是:服務ip:端口/索引名/類型名/id,過程及結果如下
2.2 不指定id插入
需要特別注意的是:當不使用id插入的時候,請求方法必須是:POST,並且路徑不能指定id,插入成功后會返回id。過程以及結果如下
關於插入數據需要注意的是:
當你創建的索引是非結構化的索引的時候,你可以隨意插入你想要的字段作為屬性。並且你每次插入的字段值可以是不一致的,索引會自動更新mapping,來適應數據。但是每次插入會耗費性能來做這些事情。
當你創建的索引是結構化的索引的時候,你如果插入的數據不符合你創建的mapping,那么也會自動更新mapping來適應你添加的數據,不會出現添加不上數據的情況。但是不建議這么做。
3. 修改數據
3.1 直接修改doc數據
需要注意的是: 方法時POST,路徑為:ES服務ip:端口/要修改的數據的id/_update,並且,需要再修改的json中,使用doc進行修改,如下圖:
3.2 使用內置腳本修改(可以對數據進行計算)
需要注意的是:方法時POST,路徑跟上面一致,但是請求體的時候,使用的是script,並且里面的字段是固定的(應該是),inline字段的值時可以進行計算的。
3.3 使用內置腳本並制定參數進行修改
需要注意的是:inline中的參數必須和params中的參數對應才可!
4 刪除數據
直接使用delete請求,指定索引,類型,id即可刪除。
查詢,是ElasticSearch的重中之重,所以會單獨更新一篇進行詳細解釋。