能夠直接使用head插件建立索引,指定分片數和備份數便可。以下圖:json
上圖建立的索引,點開索引信息,mapping是空的,表示該索引的字段並無指定,咱們能夠在建立索引的時候直接指定其字段名來建立。app
使用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" //日期格式化容許的類型 } } } } }
插入結果以下:表示索引建立成功spa
{ "acknowledged": true, "shards_acknowledged": true, "index": "book" }
關於結構化索引和非結構化索引的區別:插件
結構化索引,相似MySQL,咱們會對索引結構作預約義,包括字段名,字段類型等;那麼,非結構化索引,就相似Mongo,索引結構未知,根據具體的數據來update索引的mapping。那麼如何選擇兩種索引呢,仍是跟具體的使用場景有關,結構化相比非結構化,更易優化,性能好些,非結構化相較靈活,只是頻繁update索引mapping會有必定的性能損耗。code
重點:須要特別特別注意的是:若是你的索引後期要修改,那麼你只能重建一個你要修改爲的索引,而後將數據複製到新的索引中,代碼以下(親測可用)orm
http://localhost:9200/_reindex { "source": { "index": "old_index" }, "dest": { "index": "new_index" } }
須要注意的是:指定id插入,使用的方法時PUT,路徑是:服務ip:端口/索引名/類型名/id,過程及結果以下blog
須要特別注意的是:當不使用id插入的時候,請求方法必須是:POST,而且路徑不能指定id,插入成功後會返回id。過程以及結果以下
關於插入數據須要注意的是:
當你建立的索引是非結構化的索引的時候,你能夠隨意插入你想要的字段做爲屬性。而且你每次插入的字段值能夠是不一致的,索引會自動更新mapping,來適應數據。可是每次插入會耗費性能來作這些事情。
當你建立的索引是結構化的索引的時候,你若是插入的數據不符合你建立的mapping,那麼也會自動更新mapping來適應你添加的數據,不會出現添加不上數據的狀況。可是不建議這麼作。
須要注意的是: 方法時POST,路徑爲:ES服務ip:端口/要修改的數據的id/_update,而且,須要再修改的json中,使用doc進行修改,以下圖:
須要注意的是:方法時POST,路徑跟上面一致,可是請求體的時候,使用的是script,而且裏面的字段是固定的(應該是),inline字段的值時能夠進行計算的。
須要注意的是:inline中的參數必須和params中的參數對應纔可!
直接使用delete請求,指定索引,類型,id便可刪除。
查詢,是ElasticSearch的重中之重,因此會單獨更新一篇進行詳細解釋。