天天看点

elasticsearch使用Bulk API实现批量操作

#使用bulk api实现批量操作
#bulk的格式 {action:{metadata}}\n
#{requestbody}\n
#action:(行为)
#create:文档不存在时创建
#update:更新文档
#index:创建新文档或替换已有文档
#delete:删除一个文档
#metadata:_index,_type,_id
#create和index的区别
#如果数据存在,使用create操作失败,会提示文档已经存在,使用index则可以成功执行
#批量添加
POST /lib2/books/_bulk
{"index":{"_id":1}  }
{"title":"java","price":55}
{"index":{"_id":2}}
{"title":"html5","price":45}
{"index":{"_id":3}}
{"title":"php","price":35}
{"index":{"_id":4}}
{"title":"python","price":50}
#批量获取
GET /lib2/books/_mget
{
  "ids":["1","2","3","4"]
}
#删除:没有请求体

POST /lib2/books/_bulk
{"delete":{"_index":"lib2","_type":"books","_id":4}}
{"create":{"_index":"tt","_type":"ttt","_id":"100"}}
{"name":"lisi"}
{"index":{"_index":"tt","_type":"ttt"}}
{"name":"zhaosi"}
{"update":{"_index":"lib2","_type":"books","_id":4}}
{"doc":{"price":58}}

Bulk一次最大处理多少数据量
Bulk会把将要处理的数据载入内存中,所以数据量是有限制的,最佳的数据量不是一个确定的数值,它取决于你的硬件,你的文档大小以及复杂性,你的索引以及搜索的负载。
一般建议是1000-5000个文档,大小建议是5-15M,默认不能超过100M,可以在es的配置文件(即$ES_HOME下的config下的elasticsearch.yml)中
           

继续阅读