网站首页 文章专栏 elasticsearch学习(三)----数据实时增删改
请记住_index、_type、_id三者唯一确定一个文档
create 当文档不存在时创建之 POST /_index/_type 自动生成_id /_index/_type/_id 自定义_id
update 局部更新文档 POST /_index/_type /_id/_update
delete 删除一个文档 DELETE /_index/_type/_id 不建议使用delete请求,可用_delete_by_query 代替
create
生成自定义的唯一标识_id
//_index、_type、_id 一致,返回 409 不添加 curl -H "Content-Type:application/json" -XPOST http://192.168.1.133:9200/hbh/test1/1/_create -d '{"id":1,"name":"苹果","love":"云雨,碧波,凝烟,霜华","abstract":"碧波凝烟翠,青山敷蒿华","weight":58.5,"work_time":{"gte":"2015-10-01 12:00:00","lte":"2018-11-01"},"ip":"192.168.1.1"}' //_index、_type、_id 不一致,返回201 添加 curl -H "Content-Type:application/json" -XPOST http://192.168.1.133:9200/hbh/test1/2/_create -d '{"id":2,"name":"苹果","love":"云雨,碧波,凝烟,霜华","abstract":"碧波凝烟翠,青山敷蒿华","weight":58.5,"work_time":{"gte":"2015-10-01 12:00:00","lte":"2018-11-01"},"ip":"192.168.1.1"}'
es自动 生成唯一ID 看个人操作习惯,毕竟影响不大
curl -H "Content-Type:application/json" -XPOST http://192.168.1.133:9200/hbh/test1/ -d '{"id":2,"name":"苹果","love":"云雨,碧波,凝烟","abstract":"碧波凝烟翠,青山敷蒿华","weight":58.5,"work_time":{"gte":"2015-10-01 12:00:00","lte":"2018-11-01"},"ip":"192.168.1.1"}'
update
curl -H "Content-Type:application/json" -XPOST http://192.168.1.133:9200/hbh/test1/2/_update -d '{"doc":{"weight":59.99}}'
不用create 以及update,自动判断添加或者更新
//_index、_type、_id 一致,覆盖(全部更新),否则添加
curl -H "Content-Type:application/json" -XPUT http://192.168.1.133:9200/hbh/test1/1 -d '{"id":1,"name":"苹果","love":"云雨,碧波,凝烟","abstract":"碧波凝烟翠,青山敷蒿华","weight":58.5,"work_time":{"gte":"2015-10-01 12:00:00","lte":"2018-11-01"},"ip":"192.168.1.1"}'
curl -H "Content-Type:application/json" -XPOST http://192.168.1.133:9200/hbh/test1/1 -d '{"id":1,"name":"苹果","love":"云雨,碧波,凝烟","abstract":"碧波凝烟翠,青山敷蒿华","weight":58.5,"work_time":{"gte":"2015-10-01 12:00:00","lte":"2018-11-01"},"ip":"192.168.1.1"}'
delete
直接delete 请求,根据_id 删除
curl -H "Content-Type:application/json" -XDELETE http://192.168.1.133:9200/hbh/test1/_create
根据匹配到的条件删除 _delete_by_query query 里面定义自己的条件
curl -H "Content-Type:application/json" -XPOST http://192.168.1.133:9200/hbh/test1/_delete_by_query -d '{"query":{"term":{"weight":59.99}}}'
使用PHP进行增删改操作、
请用方法
/** * Desc:更新es库 type 1 新增 2 删除 3修改 ; data _id对象ID 必填 */ function updateEsData($type,$obj,$data){ if(!$data||!$type||!$data['_id']){ return false; } $obj_arr=['bydls','test','logstash']; if(!in_array($obj,$obj_arr)){ return false; } $data['_type']=$type; $data['_obj']=$obj; $url='请求接口地址'; $token =getToken($data);//生成自定义接口加密 $data['token'] = $token; return curlPost($url,$data); }
处理接口
public function updateEsData(){ if (!$this->_checkToken('es',I('post.'))) { //自定义的验证接口请求方法 $this->ajaxReturn(['msg'=>'验证失败','status'=>-200]); } $data=I('post.',''); $id=$data['_id']; $type=$data['_type']; $obj=$data['_obj']; unset($data['_id']); unset($data['_type']); unset($data['_obj']); unset($data['token']); if (!$type||!$id) { $this->ajaxReturn(['msg'=>'操作异常','status'=>-200]); } $obj_arr=['bydls','test','logstash']; if(!in_array($obj,$obj_arr)){ $this->ajaxReturn(['msg'=>'类型错误','status'=>-200]); } $obj_url=[ 'bydls'=>'bydls/autoData', 'test'=>'test/test', 'logstash'=>'logstash-'.date('Y.m.d').'/doc', ]; $obj_method=[ '1'=>'insert', '2'=>'delete', '3'=>'update', ]; switch ($type){ case 1:$url=$obj_url[$obj].'/'.$id; $data=json_encode($data); break; case 2:$url=$obj_url[$obj].'/_delete_by_query'; $data=json_encode(['query'=>['match'=>['_id'=>$id]]]); break; case 3:$url=$obj_url[$obj].'/'.$id.'/_update?pretty'; $data=json_encode(['doc'=>$data]); break; } elsearchPost($url, $data); //处理函数 祥见elasticsearch学习(二)----数据批量导入 $this->ajaxReturn(['msg'=>$obj_method[$type].'成功','status'=>200]); }
转载请注明出处