一、BBOSS-ElasticSearch

二、通过freeMarker创建索引库、创建索引

2.1maven

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-elasticsearch</artifactId><exclusions><exclusion><groupId>org.slf4j</groupId><artifactId>slf4j-log4j12</artifactId></exclusion></exclusions>
</dependency>
<dependency><groupId>com.bbossgroups.plugins</groupId><artifactId>bboss-elasticsearch-rest-jdbc</artifactId><version>6.5.6</version><exclusions><exclusion><groupId>org.slf4j</groupId><artifactId>slf4j-log4j12</artifactId></exclusion></exclusions>
</dependency>
<dependency><groupId>com.bbossgroups.plugins</groupId><artifactId>bboss-elasticsearch-spring-boot-starter</artifactId><version>6.5.6</version><exclusions><exclusion><groupId>org.slf4j</groupId><artifactId>slf4j-log4j12</artifactId></exclusion></exclusions>
</dependency>
<dependency><groupId>org.xerial</groupId><artifactId>sqlite-jdbc</artifactId><version>3.23.1</version><scope>compile</scope>
</dependency>
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-freemarker</artifactId>
</dependency>
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId>
</dependency>

2.2application.yml

spring:elasticsearch:bboss:elasticPassword: 123456elasticUser: elasticelasticsearch:dateFormat: yyyy.MM.dddiscoverHost: falserest:hostNames: 127.0.0.1:9200scrollBlockedWaitTimeout: 0scrollThreadCount: 200scrollThreadQueue: 200showTemplate: falsesliceScrollBlockedWaitTimeout: 0sliceScrollThreadCount: 100sliceScrollThreadQueue: 100timeZone: Asia/Shanghaihttp:connectionRequestTimeout: 5000customHttpRequestRetryHandler: org.frameworkset.spi.remote.http.ConnectionResetHttpRequestRetryHandlerdefaultMaxPerRoute: 200hostnameVerifier:keepAlive: 3600000keyPassword:keystore:maxHeaderCount: 200maxLineLength: -1maxTotal: 400retryTime: 1retryInterval: 1000soKeepAlive: falsesoReuseAddress: falsestaleConnectionCheckEnabled: falsetimeToLive: 3600000timeoutConnection: 5000timeoutSocket: 5000validateAfterInactivity: 2000dslfile:refreshInterval: -1

2.3接口方法

@RequestMapping(value="/createEsIndexMapping",method = RequestMethod.POST)public String createEsIndexMapping(@RequestBody CmIndexes cmIndexes) throws Exception {String str = "";//1、第一步使用freeMarker生成xml文件String cmIndex = esUtils.createXml(cmIndexes);//2、第二步创建ES索引String mapping = createIndiceMapping(cmIndexes);//判断是否存在if("1".equals(mapping)){str = "索引库已经存在!!!";return str;}return cmIndex;}

2.4freeMarker生成xml文件

 public String createXml(CmIndexes cmIndexes) throws IOException {Writer w  = null;String str = "";try {//1、获取xmlTemplate文件夹的当前路径URL url = Thread.currentThread().getContextClassLoader().getResource("templates");String path = url.getPath();Configuration configuration = new Configuration();configuration.setDefaultEncoding("utf-8");//解决写入到xml文件出现乱码问题configuration.setDirectoryForTemplateLoading(new File(path));//2、获取到freeMarker模板Template template = configuration.getTemplate("es.ftl","utf-8");Map<String, Object> responseMap = new HashMap<String, Object>();//3、获取索引库字段类型List<CmField> fieldList = cmIndexes.getFieldList();//获取到映射配置文件responseMap.put("esMappings",fieldList);//设置responseMap.put("mappingName",cmIndexes.getIndexesMappingName());//设置映射名称responseMap.put("indexName",cmIndexes.getIndexesName());//设置索引名称str = route+cmIndexes.getIndexesName()+".xml";File file = new File(str);FileOutputStream f = new FileOutputStream(file);w = new OutputStreamWriter(f,"utf-8");template.process(responseMap, w);} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();return "文件创建失败";}finally{w.close();}return "创建成功";}

2.5freeMarker模板【需要根据实际手动配置模板】

<?xml version="1.0" encoding="UTF-8"?>
<properties><!--Demo indice mapping structure--><property name="${mappingName}"><![CDATA[{"settings": {"number_of_shards": 6,"index.refresh_interval": "5s"},"mappings": {"properties": {<#list esMappings as esMapping>"${esMapping.fieldName}":{"type":"${esMapping.indexesFieldType}"<#if esMapping.isDate == 1>,"format":"yyyy-MM-dd HH:mm:ss.SSS||yyyy-MM-dd'T'HH:mm:ss.SSS||yyyy-MM-dd HH:mm:ss||epoch_millis"</#if>}<#if esMapping_has_next>,</#if></#list>}}}]]></property><property name="testHighlightSearch"><![CDATA[{"query": {"bool": {"must": [## 全文检索参考文档 https://www.elastic.co/guide/en/elasticsearch/reference/6.2/full-text-queries.html<#list esMappings as esMapping>#if($${esMapping.fieldName} && !$${esMapping.fieldName}.equals(""))<#if esMapping.isDate == 1>{## 时间范围检索,返回对应时间范围内的记录,接受long型的值"range": {"${esMapping.fieldName}":{"gte": #[startTime],##统计开始时间"lt": #[endTime],  ##统计截止时间}}},</#if><#if esMapping.isDate == 2>{"match" : {"${esMapping.fieldName}":{"query":#[${esMapping.fieldName}],"operator": "and"}}},</#if>#end</#list>{"match_all": {}}]}},## 分页起点"from":#[from],## 最多返回size条记录"size":#[size]}]]></property>
</properties>

2.6创建ES索引

public String createIndiceMapping(CmIndexes cmIndexes){String str = "";//1、创建es客户端对象ClientInterface clientUtil = ElasticSearchHelper.getConfigRestClientUtil("./esmapper/"+cmIndexes.getIndexesName()+".xml");//2、查询该索引是否存在boolean exist = clientUtil.existIndice(cmIndexes.getIndexesName());//3、如果存在,则删除索引表if (exist){str = "1";return str;}//4、不存在,则创建索引str = clientUtil.createIndiceMapping(cmIndexes.getIndexesName(), cmIndexes.getIndexesMappingName());return str;}

三、删除索引以及freeMarker文件

@RequestMapping(value="/deleteEsIndex",method = RequestMethod.POST)public String deleteEsIndex(@RequestParam String indexName){ClientInterface clientUtil = ElasticSearchHelper.getRestClientUtil();try {//1、删除索引//删除索引表String indice = clientUtil.dropIndice(indexName);//删除上一步创建的ftl文件  route是在pom.xml里面设置的路径String fileUrl = route+indexName+".xml";File file = new File(fileUrl);boolean delete = file.delete();if(delete == false){return "删除失败";}}catch (Exception e){e.printStackTrace();}return "删除成功";}

3.1单个删除

ClientInterface clientUtil = ElasticSearchHelper.getRestClientUtil();
clientUtil.deleteDocument("索引名称","文档类型","id");

3.2新增更新

clientUtil.addDocument("索引名称",“内容”);
clientUtil.addDocumentWithId("索引名称","文档类型","内容","内容id");

四、ES查询

4.1首先前端传JSON参数

4.2后端接口进行查询

@RequestMapping(value="/selectEsIndex",method = RequestMethod.POST)public List<Object> selectEsIndex(String indexName,String params) throws Exception {Map map = (Map)JSONObject.parse(params);ClientInterface clientUtil = ElasticSearchHelper.getConfigRestClientUtil("esmapper/"+indexName+".xml");//初始化一个加载sql配置文件的es客户端接口//执行查询,demo为索引表,_search为检索操作actionESDatas<Object> esDatas =  //ESDatas包含当前检索的记录集合,最多1000条记录,由dsl中的size属性指定clientUtil.searchList(indexName+"/_search",//demo为索引表,_search为检索操作action"testHighlightSearch",//esmapper/demo.xml中定义的dsl语句map,//变量参数Object.class);//返回的文档封装对象类型System.out.println(esDatas.getDatas());return esDatas.getDatas();}

此次难点:1、传值类型是否正确;2、freeMarker模板查询配置是否正确;

ElasticSearch入门学习笔记(一)概念篇
ElasticSearch入门学习笔记(二)软件安装篇
ElasticSearch入门学习笔记(三)SpringBoot整合篇
阿里云Docker安装ES\ES_Head\安装部署logstash导mysql数据入ElasticSearch

SpringBoot集成BBOSS-ElasticSearch实现ElasticSearch客户端相关推荐

  1. springboot集成bboss操作elasticsearch索引,类型,文档(单集群)

    bboss是一套基于query dsl语法操作和访问分布式搜索引擎elasticsearch的o/r mapping高性能开发库,底层基于es restful api.基于bboss elastics ...

  2. springboot集成websocket(一)客户端、客户端断线重连、客户端连接验证

    springboot集成websocket客户端 一.首先是导入依赖包 1.在pom.xml中加入下述即可 <!--websocket作为客户端 --><dependency> ...

  3. SpringBoot集成Cache缓存(Redis缓存,RedisTemplate方式)

    1.说明 SpringBoot集成Redis缓存, 首先创建一个Spring Boot工程, 使用Maven向导方式创建:SpringBoot集成Maven工程 然后引入redis的spring bo ...

  4. Redis集成到Maven工程(Jedis客户端)

    1.说明 Redis不仅可以使用命令行操作, 也支持大部分主流编程语言的客户端, 本文介绍Java客户端Jedis的使用, Jedis API提供了完整的Redis命令, 能够和Redis命令行一一对 ...

  5. SpringBoot集成Cache缓存(Ehcache缓存框架,注解方式)

    1.说明 Spring定义了CacheManager和Cache接口, 用来统一不同的缓存技术, 例如JCache,EhCache,Hazelcast,Guava,Redis等. 本文通过Spring ...

  6. SpringBoot集成Maven工程

    1.说明 通过Maven向导创建一个Maven Project, 而非Spring Boot向导创建Spring Starter Project, 然后通过手工修改的方式, 使这个Maven工程支持S ...

  7. 【SpringBoot集成ElasticSearch 01】2️⃣ 种方式的高级客户端 RestHighLevelClient 使用(依赖+配置+客户端API测试源码)

    1.方式一 1.1 依赖 [不使用 spring-boot-starter-data-elasticsearch 就可以脱离 springboot 版本的限制,可以自行选择ES的版本]我用的是 spr ...

  8. elasticsearch集群搭建及springboot集成使用

    elasticsearch集群搭建及springboot集成使用 1. ES介绍 2. 原理 2.1 核心概念 2.2 索引功能 2.3 ES特性 3. 分词器(analyzer) 4. 集群搭建 4 ...

  9. ES入门学习:ElasticSearch、Kibana、ik分词器的安装、简单使用及SpringBoot集成

    前言 es是采用Java语言开发,因此,想要安装运行es需要提前准备好jdk环境,关于linux配置jdk在前文linux配置jdk 本文主要介绍es的安装.kibana的安装和简单使用及ik分词器的 ...

  10. 【SpringBoot高级篇】SpringBoot集成Elasticsearch搜索引擎

    [SpringBoot高级篇]SpringBoot集成Elasticsearch搜索引擎 1. 什么是Elasticsearch? 2. 安装并运行Elasticsearch 2.1 拉取镜像 2.2 ...

最新文章

  1. WPF 自定义列表筛选 自定义TreeView模板 自定义ListBox模板
  2. jQuery HTML 添加和删除元素
  3. 今天来个爪哇去边框的小代码
  4. 如何用 C++ 在 10 行内写出八皇后?
  5. Ngrx Store实现源代码的MemoizedSelector学习笔记
  6. 排他网关(ExclusiveGateWay)
  7. 盘点那些让程序员目瞪口呆的Bug都有什么?
  8. MIP 2016年终总结
  9. mysql 配置多个数据库连接_SpringBoot多数据库连接(mysql+oracle)
  10. lisp用entmake生产圆柱体_铝型材挤压生产金属流动与模具分析
  11. 中国条码解码器市场趋势报告、技术动态创新及市场预测
  12. http get和post的区别
  13. WPF界面设计中常用的一些代码片段及属性
  14. python入门笔记
  15. 计算机桌面通过网络在拼接屏上显示,一种多个拼接屏实时同步显示方法与流程...
  16. cad修改快捷键_人手一份的绘图命令,CAD绘图必备,学会工资上万不是梦
  17. 3种CSS3实现的网页过度效果代码,可独立用于网页设计展示
  18. 请勿关闭计算机还原更改要多久,电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机怎么办...
  19. 《一本书读懂财报》:系统的输入与输出的体现
  20. 既然有MySQL了,为什么还要有MongoDB?

热门文章

  1. 怎么实现EDIUS中“老电影”特效的制作
  2. java.lang.RuntimeException: com.google.inject.CreationException: Unable to create injector异常
  3. 早餐经常喝大米粥,养胃吗?应该抛弃的三种早餐,很多人却爱吃
  4. Android加载预览PDF文件
  5. 《三体》中的经典名句
  6. 心态-《好奇心》书中的精髓:保持好奇心,能让我们的学习和生活更精彩。
  7. 【软件需求工程与建模】13组组队项目小组分工及当前完成的工作
  8. java 对接中国银联 云闪付
  9. 6、信息隐藏技术:空域下的信息隐藏
  10. 自识别标记(self-identifying marker) -(2) 用于相机标定的CALTag介绍