sql语句转为es查询条件(elasticsearch-sql使用)_sql 转 elasticsearch qsl 语句-程序员宅基地

技术标签: java  elasticsearch  es简单操作  

需求:将sql语句转为es查询所用的json语句

github源码地址:

https://gitee.com/weiyxiong_admin/elasticsearch-sql/blob/master/src/test/java/org/nlpcn/es4sql/ExplainTest.java

比如将select * from esIndex where lastTime = 1648540192929
转化为es查询语句
{
    "from":0,"size":1000,"query":{
    "bool":{
    "filter":[{
    "bool":{
    "must":[{
    "match_phrase":{
    "lastTime ":{
    "query":1648540192929,"slop":0,"zero_terms_query":"NONE","boost":1.0}}}],"adjust_pure_negative":true,"boost":1.0}}],"adjust_pure_negative":true,"boost":1.0}}}

1、添加pom.xml依赖

<!-- https://mvnrepository.com/artifact/org.nlpcn/elasticsearch-sql -->
		<dependency>
    		<groupId>org.nlpcn</groupId>
    		<artifactId>elasticsearch-sql</artifactId>
    		<version>6.8.13.0</version>
		</dependency>

2、scala 将sql转为es查询json语句

 
object ESUtils {
    
// 1、获取searchDao
lazy val searchDao = {
    
		import org.elasticsearch.client.Client
		import org.elasticsearch.client.node.NodeClient
		import org.elasticsearch.common.settings.Settings
		import org.elasticsearch.common.util.concurrent.ThreadContext
		import org.elasticsearch.threadpool.ThreadPool
		// 填写上自己的cluster.name
        val settings = Settings.builder().put("cluster.name", MetaStorageImplementation.elasticsearchClusterName).build()
        // val settings = Settings.builder().put("cluster.name", "my-application").build()
        val  threadPool = new ThreadPool(settings)
		val client = new NodeClient(settings, threadPool)
		new org.nlpcn.es4sql.SearchDao(client) 
	}
//2、通过sql转为es查询语句
	def sqlToEsQuery(sql : String) : String = {
    
		val string = searchDao.explain(sql).explain().explain()
		string
	}

3、测试

def main(args: Array[String]): Unit = {
    
	val sql = ESUtils.sqlToEsQuery("select * from esIndex where lastTime = 1648540192929")
	val esJSON =ESUtils.sqlToEsQuery(sql)
    println(esJSON)
   }
}

4、查询返回结果展示(即步骤三esJSON结果打印)

{
    "from":0,"size":1000,"query":{
    "bool":{
    "filter":[{
    "bool":{
    "must":[{
    "match_phrase":{
    "lastAccessed":{
    "query":1648540192929,"slop":0,"zero_terms_query":"NONE","boost":1.0}}}],"adjust_pure_negative":true,"boost":1.0}}],"adjust_pure_negative":true,"boost":1.0}}}

5、打开postman

POST请求
请求头: http://ip:port/esIndex /_search
请求体:
为 步骤四的返回结果展示esJSON
{
    "from":0,"size":1000,"query":{
    "bool":{
    "filter":[{
    "bool":{
    "must":[{
    "match_phrase":{
    "lastTime":{
    "query":1648540192929,"slop":0,"zero_terms_query":"NONE","boost":1.0}}}],"adjust_pure_negative":true,"boost":1.0}}],"adjust_pure_negative":true,"boost":1.0}}}
查询,即可查到符合条件的数据
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/Chat_FJ/article/details/123888668

智能推荐

junit的test 方法执行两次-程序员宅基地

文章浏览阅读3.3k次。junit

VMWare 二进制转换与此平台上的长模式不兼容-程序员宅基地

文章浏览阅读3.1k次。参考:https://jingyan.baidu.com/article/636f38bb4f40f9d6b84610f7.html开机按F1或者F2或del键进入BIOS使用”→“选择Advanced步骤阅读使用下方向键选择”cpu setup“,回车步骤阅读选择”Intel Virtual Technology“,回车步骤阅读5将Disabled改为Enabled,回车步骤阅读6使用”→“选...

React 和 Redux 快速开发实战_react-redux-starter-kit和create-react-app-程序员宅基地

文章浏览阅读449次。https://segmentfault.com/a/1190000008546809http://www.tuicool.com/articles/jyEJFny主题 Redux今天聊一聊 react + redux 环境快速搭建,以及实战一个 TodoList,可能是有史以来最简洁的方法哦,是不是很期待,当时橙子也是很吃惊这样的搭建速度。本文适合_react-redux-starter-kit和create-react-app

mysql cmd常用命令_cmd.exe /c cmd /c mysqldump -h192.168.80.252 -u ro-程序员宅基地

文章浏览阅读252次。将mysql目录下bin目录中的mysql.exe放到C:\WINDOWS下,可以执行以下命令 连接:mysql -h主机地址 -u用户名 -p用户密码 (注:u与root可以不用加空格,其它也一样) 断开:exit (回车) 创建授权:grant select on 数据库.* to 用户名@登录主机 identified by \"密码\" 修改密码:mysql_cmd.exe /c cmd /c mysqldump -h192.168.80.252 -u root -p autobi

【学生管理系统】环境搭建_学生管理系统开发环境-程序员宅基地

文章浏览阅读862次。学生管理系统环境搭建_学生管理系统开发环境

如何在jsp里面写java代码_jsp写java-程序员宅基地

文章浏览阅读3.5w次,点赞10次,收藏25次。jsp和html相比,最显著的优势就在于,jsp里面可以写java代码,但是html中不能。那么如何在jsp中写java代码呢!jsp中写java代码有如下三种方式:,这里面可以申明变量或方法,注意:这里面申明的变量是全局的,与上面的方法相比,这个方法的局部的,用于输出表达式到浏览器,注意:这里面的表达式不能跟分号_jsp写java

随便推点

powershell 字符串处理提取_powershell截取指定字符串-程序员宅基地

文章浏览阅读2.3w次。常用到的有三种:1、 -match 运算符,通过 $Matches来获取字段。比如我之前的或取ip地址:http://hi.baidu.com/shrekzz/item/1bcf45ffc04d461fff3582fc$WebClient=new-object System.Net.WebClient$url="http://iframe.ip138.com/ic.asp"$Web_powershell截取指定字符串

《人机交互技术》第二章 感知和认知基础_人机交互中人们常用的感知的特点-程序员宅基地

文章浏览阅读7.3k次。人的感知:通过人体器官和组织进行人与外部世界的信息的交流和传递,人机交互主要通过人的感知来完成,主要包括视觉感知(80%)、听觉感知和触觉感知。1.视觉(第二版 P10)(1)视觉是人类最重要的感觉通道,人类从周围世界获取的信息约有80%是通过视觉得到的。(2)人眼对于黄色最敏感;视觉感知可以分为两个阶段:收到外部刺激接收信息阶段和解释信息阶段。一方面,眼睛和视觉系统的物理特性决定了人..._人机交互中人们常用的感知的特点

classpath和classpath*的配置区别_classpath*:*.properties-程序员宅基地

文章浏览阅读427次。在使用spring时,经常会看到类似 classpth:、classpath*: 这样的前缀,不管是加载spring xml配置文件还是其配置文件中加载资源文件都会看到这两种前缀配置,其实这两种前缀是有区别的,下面将举例详细解释。[一]、测试项目准备我们以spring中加载properties资源文件为例讲解,目录结构大致如下:src├─main│ ├─filters│ │_classpath*:*.properties

使用 ftrace 调试 Linux 内核,第 2 部分_ftrace 左边的* +啥意思-程序员宅基地

文章浏览阅读306次。ftrace 是 Linux 内核中提供的一种调试工具。使用 ftrace 可以对内核中发生的事情进行跟踪,这在调试 bug 或者分析内核时非常有用。本系列文章对 ftrace 进行了介绍,分为三部分。本文是第二部分,通过示例介绍了如何使用 ftrace 中的跟踪器,并对不同格式的跟踪信息进行了描述,同时还对如何使用 ftrace 调试指定内核模块进行了介绍。通过对本文的学习,读者可以了解如何_ftrace 左边的* +啥意思

js删除当前站点所有域cookie_js清除当前域下的cookie-程序员宅基地

文章浏览阅读1.1k次。js 清除 当前站点所有域cookiefunction delCookie () {var keys = document.cookie.match(/[^ =;]+(?==)/g)if (keys) {for (var i = keys.length; i–???? {document.cookie = keys[i] + ‘=0;path=/;expires=’ + new Date(0).toUTCString() // 清除当前域名下的,例如:m.ratingdog.cndocument_js清除当前域下的cookie

【转】css中强大的EM-程序员宅基地

文章浏览阅读138次。http://www.w3cplus.com/css/px-to-em使用CSS也好久了,但一直都是在使用“px”来设置Web元素的相关属性,未敢使用“em”。主要原因是,对其并不什么了解,只知道一点概念性的东西,前段时间在项目中要求使用“em”作为单位设置元素,所以从头对“em”学习了一回。稍为有一点理解,今天特意整理了一份博文与大家一起分享,希望对童子们有些许的帮助。这篇教程将引导大...

推荐文章

热门文章

相关标签