ElasticSearch(三):ES單機版本基本操做之刪除,修改,插入

1. 建立索引

1.1 直接建立索引

能夠直接使用head插件建立索引,指定分片數和備份數便可。以下圖:json

1.2 建立結構化索引

上圖建立的索引,點開索引信息,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"
  }
}

2. 插入數據

2.1 指定id插入

須要注意的是:指定id插入,使用的方法時PUT,路徑是:服務ip:端口/索引名/類型名/id,過程及結果以下blog

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的重中之重,因此會單獨更新一篇進行詳細解釋。

相關文章
相關標籤/搜索