精选文章 Elasticsearch: ES使用sql语句进行查询

Elasticsearch: ES使用sql语句进行查询

【摘要】//format 定义返回的数据类型 适合php的推荐使用json ,除此之外还可以选择   txt,csv,yaml,cbor,smile等使用sql语句查询有一个弊端 就是开始定义某列数据的类型 后期存储时 存入了错误的数据类型 存储时成功的 但是使用sql语句查询会报错,所有最有效的ES查询方法还是使用原生的 
当我们不确定有哪些SQL函数可以直接使用时 ,可以在 /_xpack/sq...

//format 定义返回的数据类型 适合php的推荐使用json ,除此之外还可以选择   txt,csv,yaml,cbor,smile等
使用sql语句查询有一个弊端 就是开始定义某列数据的类型 后期存储时 存入了错误的数据类型 存储时成功的 但是使用sql语句查询会报错,所有最有效的ES查询方法还是使用原生的

当我们不确定有哪些SQL函数可以直接使用时 ,可以在 /_xpack/sql?format=json 接口使用query='show functions',会列举出支持的SQL函数;

且SQL api查询的数据 不做限制 最多只能查询到满足条件的数据1000条。


/**
* elasticsearh-sql 查询方法,传入sql语法查询
*/
function elasticsearh_sql($sql=''){
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL,你自己的ES路径和端口.'/_xpack/sql?format=json');
curl_setopt($curl, CURLOPT_HTTPHEADER, ["Content-type:application/json"]);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0); //让CURL支持HTTPS访问
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); //结果转化为字串,而不是直接输出
curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 300);
curl_setopt($curl, CURLOPT_TIMEOUT, 300);
curl_setopt($curl, CURLOPT_POST, 1);
curl_setopt($curl, CURLOPT_POSTFIELDS, json_encode(['query'=>$sql]));
$result = curl_exec($curl);
if($result){
$result=json_decode($result,true);
if(isset($result['columns']) && isset($result['rows']) && is_array($result['columns']) && is_array($result['rows'])){
$field=[];
foreach ($result['columns'] as $key => $value) {
$field[$key]=$value['name'];
}
$data=[];
foreach ($result['rows'] as $key => $value) {
foreach ($value as $keys => $val) {
$data[$key][$field[$keys]]=$value[$keys];
}
}
return $data;
}
}
return false;
}

/**
 * elasticsearh-sql sql语句转ES 当不熟悉原生ES的写法时 可以使用sql转es然后根据该方法返回的数据 进行原生es的查询
 */
function sql2es($sql=''){ $curl = curl_init(); curl_setopt($curl, CURLOPT_URL,你自己的ES路径和端口.'/_xpack/sql/translate'); curl_setopt($curl, CURLOPT_HTTPHEADER, ["Content-type:application/json"]); curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0); curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 300); curl_setopt($curl, CURLOPT_TIMEOUT, 300); curl_setopt($curl, CURLOPT_POST, 1); curl_setopt($curl, CURLOPT_POSTFIELDS, json_encode(['query'=>$sql])); $result = curl_exec($curl);
//   curl_close($curl); $result = json_decode($result,true); dd($result);
}

SQL API的功能其实是将SQL语句翻译成DSL语句给ES执行。

Elasticsearch: ES使用sql语句进行查询1

 

勿删,copyright占位
分享文章到微博
分享文章到朋友圈

上一篇:安卓Jar和Aar的区别以及更新UI的几种方式

下一篇:前端实习生面试题分析(一)

您可能感兴趣

  • SQL Server7.0 Web資料搜尋技巧

    「資料庫資料」搜尋:使用SQL指令的LIKE語法、或Microsoft SQL Server 7.0的中文全文檢索(Full Text Search)功能。 Microsoft Index Server   於Windows NT Option Pack當中所包括的Microsoft Index Server,提供中文全文檢索的搜尋功能,可以搜尋網站中Microsoft Word 或Micr...

  • Sybase存储过程的建立和使用

    存储过程的特点   Sybase的存储过程是集中存储在SQL Server中的预先定义且已经编译好的事务。存储过程由SQL语句和流程控制语句组成。它的功能包括:接受参数;调用另一过程;返回一个状态值给调用过程或批处理,指示调用成功或失败;返回若干个参数值给调用过程或批处理,为调用者提供动态结果;在远程SQL Server中运行等。      存储过程的性能特点如下:   ·存储过程是预编译过...

  • 使用ODBCAPI编写数据库应用程序

    用Visual C++开发数据库应用程序EMAIL:zzh1415@21cn.com1、    概述1、1    Visual C++开发数据库技术的特点Visual C++提供了多种多样的数据库访问技术——ODBC API、MFC ODBC、DAO、OLE DB、ADO等。这些技术各有自己的特点,它们提供了简单、灵活、访问速度快、可扩展性好的开发技术。1、 简单性Visual C++中提供...

  • 使用OLEDB编写数据库应用程序

    使用OLE DB5.1    概述OLE DB的存在为用户提供了一种统一的方法来访问所有不同种类的数据源。OLE DB可以在不同的数据源中进行转换。利用OLE DB,客户端的开发人员在进行数据访问时只需把精力集中在很少的一些细节上,而不必弄懂大量不同数据库的访问协议。OLE DB是一套通过COM接口访问数据的ActiveX接口。这个OLE DB接口相当通用,足以提供一种访问数据的统一手段,而...

  • 使用SourceSafe 做好配置管理

    大家知道配置管理是软件开发的重要一项工作。以下是我在使用vc6 开发一个项目中,使用sourcesafe 的过程,项目共4 个程序员,共5万多行程序。供参考。采用SourceSafe 做配置管理    在开发过程中,我们采用sourceSafe 做版本管理,取得不错的效果。虽然,没有什么特别可说的,但是采用新的工具之后,项目的管理一下子清晰起来。下面简单介绍一下。每天上午开发人员从serve...

  • 使用组件来保护你的ASP代码

    以前大家谈了很多有关打开数据库连接安全的问题,现在我再提出一种思路使用ActiveX DLL来保护你的代码。(既可以不用为使用共享的加密软件而发愁,更重要的是可以自己来顶制加密方法了,享受一下“一切尽在掌握之中”的感觉。同时也为了让大家都自己动手来做出自己的组件来。)ActiveX DLLs是被编译过的机器代码,如果没有源项目文件的话是不能够被编译的。这个技术使得开发者有可能开发出公共的自动...

  • 如何制作和使用帮助文件

    如何制作和使用帮助文件  整理编辑:China ASP    带 有 帮 助 文 件 的 应 用 程 序 无 论 对 程 序 员 还 是 用 户 都 是 不 同 凡 响 的, 它 能 节 省 印 刷 大 量 用 户 手 册 的 开 支, 对 程 序 员 编 辑 修 改 和 用 户 手 册 的 复 制 保 存 都 极 为 方 便。 帮 助 文 件 的 另 一 个 很 有 前 景 的 应 用 是...

  • 利用SQL Server发邮件

    SQL SERVER提供了通过EXCHANGE或OUTLOOK收发邮件的扩展存储过程,下面将这几个过程简单的介绍一下。一、启动SQL Mail    xp_startmail @user,@password                    @user和@password都是可选的    也可打开Enterprise Manager中的Support Services,在SQL Mail...

CSDN

CSDN

中国开发者社区CSDN (Chinese Software Developer Network) 创立于1999年,致力为中国开发者提供知识传播、在线学习、职业发展等全生命周期服务。

华为云40多款云服务产品0元试用活动

免费套餐,马上领取!
Elasticsearch: ES使用sql语句进行查询介绍:华为云为您免费提供Elasticsearch: ES使用sql语句进行查询在博客、论坛、帮助中心等栏目的相关文章,同时还可以通过 站内搜索 查询更多Elasticsearch: ES使用sql语句进行查询的相关内容。| 移动地址: Elasticsearch: ES使用sql语句进行查询 | 写博客