Elasticsearch-Sql+Mybatis+SpringBoot集成

  • 本文介绍了springboot如何集成elasticsearch-sql+mybatis
    • rest方式使用es-sql
    • JDBC方式用springboot+mybatis访问

本文介绍了springboot如何集成elasticsearch-sql+mybatis

大家好!ElasticSearch(下面用es作为缩减)作为开源界搜索和数据分析的宠儿,受到了很多公司的青睐,无论是查询速度,还是扩展性,容错性都是很不错的,而且配合官方的logstashkibana,以及filebeat,更是如虎添翼,但是es的transport client的api是解析非常困难,而且大家又习惯了sql语法,所以在es5.x版本以后已经有elasticsearch-sql的插件,在6.4版本以后,这个插件无需安装,自带的功能。下面给大家介绍一下es-sql的使用方法

rest方式使用es-sql

下面我给大家简要看一下如何用rest方式来执行es-sql

  1. curl

    POST /_xpack/sql?format=txt
    {"query": "select sum(money) from trade "
    }
    
  2. 学习链接地址https://www.elastic.co/guide/en/elasticsearch/reference/current/sql-rest.html

JDBC方式用springboot+mybatis访问

1.maven依赖引入

         <dependency><groupId>org.elasticsearch.plugin</groupId><artifactId>x-pack-sql-jdbc</artifactId><version>6.4.3</version></dependency>
    如果引入失败,将jar包下载下来,用下面的方式引入,将jar包下载下来,到本地文件夹,然后引入
        <dependency><groupId>org.elasticsearch.plugin</groupId><artifactId>x-pack-sql-jdbc</artifactId><version>6.4.3</version><systemPath>${project.basedir}/../lib/x-pack-sql-jdbc-6.4.3.jar</systemPath><scope>system</scope></dependency>
  1. mybatis config文件
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configurationPUBLIC "-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration><settings>    <!-- 开启二级缓存 --><setting name="cacheEnabled" value="true"/><!-- 打印查询语句 --><setting name="logImpl" value="STDOUT_LOGGING" /><setting name="useColumnLabel" value="false" /></settings>
</configuration>

-比较重要的地方

<setting name="useColumnLabel" value="false" />

这句话一定要添加

  1. application.yml添加一下配置
spring:datasource: es: url: jdbc:es://host地址:9200driver-class-name: org.elasticsearch.xpack.sql.jdbc.jdbc.JdbcDrivermapperLocations: classpath:mapper/es/*.xmlconfigLocation: classpath:config/mybatis.cfg.xml

4.EsDruidDataSourceConfig 类,我用的是druid连接池,你们在用的时候需要把这个连接池在pom文件中引入一下

import com.alibaba.druid.pool.DruidDataSource;
import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;import javax.sql.DataSource;/**
* @program:
* @description: es 数据源配置
* @author: sunyf
* @create: 2018-11-16 19:15
**/
@Configuration
@MapperScan(basePackages = {"cc.youshu.eurekaclient.dao.es"}, sqlSessionFactoryRef = "esSqlSessionFactory")
public class EsDruidDataSourceConfig {@Value("${spring.datasource.es.configLocation}")private String configLocation;@Value("${spring.datasource.es.mapperLocations}")private String bigdataMapperLocations;@Value("${spring.datasource.es.url}")private String esUrl;@Bean(name = "esDataSource")public DataSource esDataSource() {DruidDataSource dataSource = new DruidDataSource();dataSource.setDriverClassName("org.elasticsearch.xpack.sql.jdbc.jdbc.JdbcDriver");dataSource.setUrl(esUrl);return dataSource;}/*** SqlSessionFactory配置** @return* @throws Exception*/@Bean(name = "esSqlSessionFactory")public SqlSessionFactory bigdataSqlSessionFactory(@Qualifier("esDataSource") DataSource dataSource) throws Exception {SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();sqlSessionFactoryBean.setDataSource(dataSource);PathMatchingResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();//配置mapper文件位置sqlSessionFactoryBean.setMapperLocations(resolver.getResources(bigdataMapperLocations));sqlSessionFactoryBean.setConfigLocation(resolver.getResource(configLocation));return sqlSessionFactoryBean.getObject();}}
  1. 至此已经引入完毕,下面就是和你们正常的一样,写一个mapper文件,然后启动springboot项目,下面是我的mapper文件
import org.apache.ibatis.annotations.Mapper;/**
1. @program: youshu_stat
2. @description: trade表数据库接口
3. @author: sunyf
4. @create: 2018-11-16 18:08
**/
@Mapper
public interface RwTradeMapper {Long testSql();
}

-下面是我的mapper.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="cc.youshu.eurekaclient.dao.es.RwTradeMapper">
<select id="testSql" resultType="java.lang.Long">select trade_no  from rw_trade limit 1
</select>
</mapper>
  1. 最后我给出来我的测试类
import cc.youshu.eurekaclient.EurekaClientApplication;
import cc.youshu.eurekaclient.dao.es.RwTradeMapper;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.annotation.Rollback;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;/**
* @program: youshu_stat
* @description: 测试
* @author: sunyf
* @create: 2018-11-16 18:16
**/@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest(classes = EurekaClientApplication.class)
public class ApplicationTests {@Autowiredprivate RwTradeMapper rwTradeMapper;@Test@Rollbackpublic void testRwTradeMapper() throws Exception {Long s= rwTradeMapper.testSql();System.out.println("输出订单号为"+s);}}

使用es-sql需要是购买x-pack,本人提供破解的6.4.0版本jar包,其他步骤,网上教程一堆,jar包地址https://download.csdn.net/download/qq_34748569/10866788

你可以找到更多关于 es-sql的信息 https://www.elastic.co/products/stack/elasticsearch-sql.

Elasticsearch-Sql+Mybatis+SpringBoot集成相关推荐

  1. java整合mybatis,springboot集成mybatis

    # springboot集成mybatis springboot基础mybatis还是很简单的,比之前springmvc集成mybatis要少很多配置,只要大家按照步骤一步一步来,几分钟就 能实现.具 ...

  2. 史上最简单的Elasticsearch教程:SpringBoot集成Elasticsearch 实时流量监测平台

    SpringBoot集成Elasticsearch 实时流量监测平台 目录: 第一章:初尝 Elasticsearch 第二章:玩转 Kibana 第三章:开发原生 Elasticsearch 案例 ...

  3. ElasticSearch学习:springboot集成ElasticSearch

    跟其他的菲关系类型数据库一样集成springboot,在生成代码时,勾选web和非关系数据库里面的ElasticSearch就可以. demo的git地址我放在下面: git es demo 代码 这 ...

  4. springboot——集成elasticsearch进行搜索并高亮关键词

    目录 1.elasticsearch概述 3.springboot集成elasticsearch 4.实现搜索并高亮关键词 1.elasticsearch概述 (1)是什么: Elasticsearc ...

  5. ElasticSearch - SpringBoot集成ES

    文章目录 ElasticSearch - SpringBoot集成ES 1.整体设计思路(仿NBA中国官网) 2.项目搭建 3.ES API的基本使用 3.1 新增球员信息 3.2 查看球员信息 3. ...

  6. BindingException: Invalid bound statement (not found)问题排查:SpringBoot集成Mybatis重点分析...

    重构代码,方法抛出异常:BindingException: Invalid bound statement (not found) 提示信息很明显:mybatis没有提供某方法 先不解释问题原因和排查 ...

  7. Java 捕获 mybatis异常_3 springboot集成mybatis和全局异常捕获

    mybatis有两种方式,一种是基于XML,一种是基于注解 springboot集成mybatis 首先先创建表,这里都简化了 DROP TABLE IF EXISTS `user`; CREATE ...

  8. springboot jpa sql打印_SpringBoot集成Spring Data JPA以及读写分离

    相关代码:github OSCchina JPA是什么 JPA(Java Persistence API)是Sun官方提出的Java持久化规范,它为Java开发人员提供了一种对象/关联映射工具 来管理 ...

  9. SpringBoot集成MyBatis-Plus自定义SQL

    1.说明 本文介绍Spring Boot集成MyBatis-Plus框架后, 基于已经创建好的Spring Boot工程, 添加自定义的SQL实现复杂查询等操作. 自定义SQL主要有两种方式, 一种是 ...

最新文章

  1. Jquery DIV滚动至浏览器顶部后固定不动代码
  2. 报名 | 大数据如何提升保险客户体验思享会
  3. Android:30分钟弄明白Touch事件分发机制
  4. Fiddler代理手机抓包
  5. 一些常见去除恶意软件的东东
  6. AI理论知识整理(7)-单高斯模型
  7. CommandBehavior.CloseConnection的使用
  8. 方案计数(带修计数题/线段树)
  9. bootstrap样式异常_处理异常功能样式
  10. MyBatisPlus_删除篇_入门试炼_04
  11. hdu 4856 Tunnels
  12. 一种数据库打天下?开源数据库选型应该注意什么?
  13. 【续上篇】推荐一款液晶电视测试软件
  14. C#自动注册dll方法
  15. 把arduino当AVRISP烧写器Arduino给Arduino烧boot
  16. js监听移动端手机横竖屏事件
  17. 怎么从零开始自己做网站?
  18. HMI——“已连续登录3次,用户已注销”问题
  19. Floorplan的SSN(Simultaneous Switching Noise)问题
  20. Java多线程+IO流+网络编程+MySQL+JDBC编程实现多人联机版坦克大战

热门文章

  1. 什么是聚簇索引与非聚簇索引
  2. 电商精细化运营的五大关键指标和三个关键思路——笔记
  3. Java学习第一天(一):JDK下载安装与开发环境的搭建
  4. 奇葩公司:520不发朋友圈秀恩爱就要劝退!
  5. 我的第一次应聘经历有感--书到用时方恨少
  6. web安全相关知识点(持续更新中)
  7. Spring中的各种Utils(四):ClassUtils详解
  8. open和with open的用法,你弄明白了吗?
  9. 51Nod ProjectEuler 48
  10. python 调用百度云端人脸搜索