批量获取和批量的bulk操作
mget批量查询
如果通过之前的get方法去获取某个document/数据的时候,当要查询的数量过多的时候,效率是比较低的(http操作每次建立都要经历三次握手),所以es提供了一个mget,可以让我们一次性查询多条记录
查询job1中id为1的数据,和job2中id为2的数据
GET _mget { "docs":[ {"_index":"testdb", "_type":"job1", "_id":1 }, {"_index":"testdb", "_type":"job2", "_id":2 } ] }
如果获取的index和type都一样,可以这样写
GET testdb/job1/_mget { "docs":[ { "_id":1 }, { "_id":2 } ] }
bulk批量操作
批量导入可以合并多个操作,比如index,delete, update,create等等。
也可以帮助我们从一个索引导入到另一个索引中
POST _bulk {"index":{"_index":"lagou","_type":"job","_id":"1"}} {"title":"python分布式爬虫开发","salary_min":15000,"city":"北京","company":{"name":"百度","company_addr":"北京市软件园"},"publish_date":"2017-4-16","comments":15} {"index":{"_index":"lagou","_type":"job2","_id":"2"}} {"title":"python django开发","salary_min":30000,"city":"成都","company":{"name":"阿里巴巴","company_addr":"北京软件园B区"},"publish_date":"2017-4-18","comments":50}
这里一定只能写成一行,不能为了美观写成多行
需要注意的是,bulk的操作写法每一条数据都是由两行构成,delete除外
像我们上面写的index,每个都是两行,还有
只有delete是一行