環境: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}}