简单实例:批量curd操作

  • mget批量查询

  • bulk批量增删改

mget批量查询

一条一条的查询

GET /test_index/test_type/1
GET /test_index/test_type/2

mget批量查询

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

返回结果

如果查询的document是一个index下的不同type种的话

如果查询的数据都在同一个index下的同一个type下

bulk批量增删改

操作原型:

每一个操作要两个json串,语法如下:

其中action有以下参数:

  • (1)delete:删除一个文档,只要1个json串就可以了

  • (2)create:PUT /index/type/id/_create,强制创建(文档已存在会报错)

  • (3)index:普通的put操作,可以是创建文档,也可以是全量替换文档

  • (4)update:执行的partial update操作

实例:

注意metadata信息包括_index, _type,_id等

实例:

bulk api对json的语法,有严格的要求,每个json串不能换行,只能放一行,同时一个json串和一个json串之间,必须有一个换行

返回成功结果:

bulk操作中,任意一个操作失败,是不会影响其他的操作的,但是在返回结果里,会告诉你异常日志

异常错误日志,根据错误日志 进行相应处理:

同一个index下操作

同一个index,同一个type下操作

bulk size最佳大小

bulk request会加载到内存里,如果太大的话,性能反而会下降,因此需要反复尝试一个最佳的bulk size。一般从1000~5000条数据开始,尝试逐渐增加。另外,如果看大小的话,最好是在5~15MB之间。

Last updated

Was this helpful?