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


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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM