Elasticsearch(三)—— es的批量操作(mget & bulk)

批量获取和批量的bulk操作

 

mget批量查询

如果通过之前的get方法去获取某个document/数据的时候,当要查询的数量过多的时候,效率是比较低的(http操作每次建立都要经历三次握手),所以es提供了一个mget,可以让我们一次性查询多条记录

 

Elasticsearch(三)—— es的批量操作(mget & bulk)_第1张图片

查询job1中id为1的数据,和job2中id为2的数据

GET _mget
{
  "docs":[
    {"_index":"testdb",
      "_type":"job1",
      "_id":1
    },
    {"_index":"testdb",
      "_type":"job2",
      "_id":2
    }
    ]
}

Elasticsearch(三)—— es的批量操作(mget & bulk)_第2张图片

 

如果获取的index和type都一样,可以这样写

GET testdb/job1/_mget
{
  "docs":[
    {
      "_id":1
    },
    {
      "_id":2
    }
    ]
}

Elasticsearch(三)—— es的批量操作(mget & bulk)_第3张图片

 

 

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}

这里一定只能写成一行,不能为了美观写成多行

Elasticsearch(三)—— es的批量操作(mget & bulk)_第4张图片

 

需要注意的是,bulk的操作写法每一条数据都是由两行构成,delete除外

像我们上面写的index,每个都是两行,还有

Elasticsearch(三)—— es的批量操作(mget & bulk)_第5张图片

只有delete是一行

 

你可能感兴趣的:(Elasticsearch(三)—— es的批量操作(mget & bulk))