es-curl 查询与更新
1,封装http方法
- private function http($url, $data = NULL, $json = false)
- {
- unset($res,$curl,$errorno);
- $curl = curl_init();
- curl_setopt($curl, CURLOPT_URL, $url);
- curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
- curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
- if (!empty($data)) {
- if ($json && is_array($data)) {
- $data = json_encode($data);
- }
- curl_setopt($curl, CURLOPT_POST, 1);
- curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
- if ($json) { //发送JSON数据
- curl_setopt($curl, CURLOPT_HEADER, 0);
- curl_setopt($curl, CURLOPT_HTTPHEADER,
- array(
- 'Content-Type: application/json; charset=utf-8', 'Content-Length:' . strlen($data))
- );
- }
- }
- curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
- $res = curl_exec($curl);
- $errorno = curl_errno($curl);
- if ($errorno) {
- return array('errorno' => false, 'errmsg' => $errorno);
- }
- curl_close($curl);
- return json_decode($res, true);
- }
2.查询调用
- #索引
- $index_name = 'apt_result_md5';
- $ip = es的ip
- $port = 端口(9200)
- # 查询条件
- $params['query']['bool']['must'][] = ['match'=>[$white_type=>$white_content]];
- $params['size'] = 1000;
- $search = $this->http("http://".$ip:$port."/".$index_name."/_search",$params,true);
3.更新调用
- # $index_name/$type/$id 索引/类型/id
- $update['doc'][更新字段] = $arr;
- $updateRes = $this->http("http://" . $ip:$port . "/" . $index_name ."/" .$type. "/".$id. "/_update", $update, true);
4.批量操作
- /**
- * @param $id 需要修改的id
- * @param $arr 需要修改的内容
- */
- public function onposDelEs($id,$arr){
- try {
- $update = array(
- 'update' => array(
- '_id' => $id,
- '_retry_on_conflict' => 3,
- ));
- $a .= json_encode($update) . "\n";
- $update = array(
- 'doc' => array(
- $white_type => $arr,
- )
- );
- $a .= json_encode($update) . "\n";
- }
- }
- $updateRes = $this->http("http://" . $GLOBALS['CONFIG']['ES_HORSE']['DSN'] . ':' . $GLOBALS['CONFIG']['ES_HORSE']['PORT'] . "/" . $index_name . "/" . $type . "/_bulk", $a, false);
- if(!$updateRes){
- $this->ajaxReturn(array('code' => -1, 'msg' => 'update es 数据 失败'));
- }
- }
- }
- } catch (Exception $e) {
- $this->ajaxReturn(array('code' => -1, 'msg' => $e->getMessage()));
- }
- }
5.其他拓展
行为 解释
|
|
|
|
|
|
|
|

- POST /_bulk
- { "delete": { "_index": "website", "_type": "blog", "_id": "123" }}
- { "create": { "_index": "website", "_type": "blog", "_id": "123" }}
- { "title": "My first blog post" }
- { "index": { "_index": "website", "_type": "blog" }}
- { "title": "My second blog post" }
- { "update": { "_index": "website", "_type": "blog", "_id": "123", "_retry_on_conflict" : 3} }
- { "doc" : {"title" : "My updated blog post"} }

es-curl 查询与更新的更多相关文章
- ES 复合查询
ES在查询过程中比较多遇到符合查询,既需要多个字段过滤也需要特殊情况处理,本文简单介绍几种查询组合方便快捷查询ES. bool布尔查询有一个或者多个布尔子句组成 filter 只过滤符合条件的 ...
- es的查询、排序查询、分页查询、布尔查询、查询结果过滤、高亮查询、聚合函数、python操作es
今日内容概要 es的查询 Elasticsearch之排序查询 Elasticsearch之分页查询 Elasticsearch之布尔查询 Elasticsearch之查询结果过滤 Elasticse ...
- 使用TSQL查询和更新 JSON 数据
JSON是一个非常流行的,用于数据交换的文本数据(textual data)格式,主要用于Web和移动应用程序中.JSON 使用“键/值对”(Key:Value pair)存储数据,能够表示嵌套键值对 ...
- 简单的php Mysql类(查询 删除 更新)
php Mysql类一般都包括了几乎我们常用的数据库操作方法,这里只提供了查询 删除 更新三种操作,算不是很全只是一个简单的数据库查询类了. 代码如下 复制代码 class mysql { ...
- Sql Server Text 类型列 查询和更新
Text(ntext.image)类型为大数据字段,因为存储方式不同,也决定了其查询和更新不同于一般方法. 1.表定义: 2.查询: Like查询是可用的: select * from dbo.nod ...
- MongoDB 的创建、查询、更新、删除
MongoDB数据库中,创建.查询.更新.删除操作的对象是集合. 1.查看某个数据库中有哪些集合,在此之前需要使用数据库 C:\Windows\system32>mongo MongoDB sh ...
- java序列化对象 插入、查询、更新到数据库
java序列化对象 插入.查询.更新到数据库 : 实现代码例如以下: import java.io.ByteArrayInputStream; import java.io.ByteArrayOutp ...
- 返璞归真 asp.net mvc (1) - 添加、查询、更新和删除的 Demo
原文:返璞归真 asp.net mvc (1) - 添加.查询.更新和删除的 Demo [索引页] [源码下载] 返璞归真 asp.net mvc (1) - 添加.查询.更新和删除的 Demo 作者 ...
- Microsoft SQL - 查询与更新
查询与更新(Query & Update) 转义引号 SQL语句中字符串只能使用单引号,如果需要转义,可用单引号转义单引号. 查询(Inquire) 以下公式中的c指代列名. 规则 1.查询语 ...
- 从零打造在线网盘系统之Hibernate查询与更新技术
欢迎浏览Java工程师SSH教程从零打造在线网盘系统系列教程,本系列教程将会使用SSH(Struts2+Spring+Hibernate)打造一个在线网盘系统,本系列教程是从零开始,所以会详细以及着重 ...
随机推荐
- Java-汉字繁体拼音转换
import com.github.stuxuhai.jpinyin.ChineseHelper; import com.github.stuxuhai.jpinyin.PinyinFormat; i ...
- vim全局替换命令-乾颐堂
语法为 :[addr]s/源字符串/目的字符串/[option] 全局替换命令为::%s/源字符串/目的字符串/g [addr] 表示检索范围,省略时表示当前行. 如:“1,20” :表示从第1行到2 ...
- Ubuntu 安装QT5 后编译程序报错: FindQt5Widgets.cmake
安装QT5.4后,需要编译一个C++程序. Cmakelist 有find_package(Qt5Widgets REQUIRED),cmake 报错如下: CMake Error at CMakeL ...
- ros console_bridge找不到
Could not find a package configuration file provided by "console_bridge" with any of the f ...
- paho_c_pub 使用方法
Latest Paho Status (2) 摘自:http://modelbasedtesting.co.uk/ I last wrote about the state of Paho in Oc ...
- javascript -window与document 待整理
window对象和document对象的区别一般来讲,一个window里就是一个document,但是,iframe里面也可以装个document,在iframe里面就有区别了 alert(docum ...
- DapperExtensions 使用教程
最近搭建一个框架,使用dapper来做数据库访问,数据是sql server2012,支持多个数据库.事务.orm.ado.net原生操作方式,非常方便. 使用dapper的原因网上有很多文章说明,这 ...
- Linux基础系统权限
Linux基础系统权限 文件权限 Linux中,每个文件拥有三种权限 权限 对文件的影响 对目录的影响 r(读取) 可读取文件 可列出目录内容 w(写入) 可修改文件内容 可在目录中创建删除文件 x( ...
- hdu 4284 Travel(壮压DP&TSP&floyd)
Travel Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Su ...
- 第二章第一个项目——关于mime
一句话就能解释清楚. MIME标注HTTP响应类型. 而后缀名标注文件类型. ---------分割线-------- http响应实质上只有数据,没有文件名. 举个例子吧. HTTP/1.1 200 ...