elasticsearch6 學習之批量操作


環境:elasticsearch6.1.2        kibana6.1.2 

一、mget批量查詢

mget可以將多個請求才能獲的數據,合並到一個請求中以節省網絡開銷。

1、查詢同一個索引下,通一個類型,不同id的數據

GET /book_index/book_type/_mget
{
   "docs" : [
      {
         "_id" :    1
      },
      {
         "_id" :    2
      }
   ]
}

更簡單的方式:

GET /book_index/book_type/_mget
{
  "ids":[1,2]
}

2、查詢不同索引,不同類型的數據

GET /_mget
{
   "docs" : [
      {
        "_index":"test_index",
        "_type":"test_type",
         "_id" :    1
      },
      {
        "_index":"book_index",
        "_type":"book_type",
         "_id" :    1
      }
   ]
}

 

二、bulk 批量添加、修改、刪除操作

1、bulk api對json的語法,有嚴格的要求,每個json串不能換行,只能放一行,同時一個json串和一個json串之間,必須有一個換行

2、bulk操作中,任意一個操作失敗,是不會影響其他的操作的,但是在返回結果里,會告訴你異常日志

3、bulk request會加載到內存里,如果太大的話,性能反而會下降,因此需要反復嘗試一個最佳的bulk,size。一般從1000~5000條數據開始,嘗試逐漸增加。另外,如果看大小的話,最好是在5~15MB之間。

1、bulk批量添加

 

POST /_bulk 
{"create":{"_index":"book_index","_type":"book_type","_id":4}}     //create 添加操作
{"name":"book4","author":"ADC"}
{"create":{"_index":"book_index","_type":"book_type","_id":5}}     //create 添加操作
{"name":"book5","author":"ADC5"}
{"index":{"_index":"book_index","_type":"book_type","_id":4}}      //index  該數據做的是全量替換操作
{"name":"book4","author":"update rep"}

 

2、bulk批量修改

POST /_bulk
{"update":{"_index":"book_index","_type":"book_type","_id":6}}
{"doc":{"name":"book666","author":"update rep6666"}}
{"update":{"_index":"book_index","_type":"book_type","_id":7}}
{"doc":{"name":"book77"}}

該方式做的是partial update  指定修改內容修改。

3、bulk批量刪除

POST /_bulk
{"delete":{"_index":"book_index","_type":"book_type","_id":6}}
{"delete":{"_index":"book_index","_type":"book_type","_id":7}}

 


免責聲明!

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



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