使用前先对照springboot和es和spring-data之间的版本关系

https://docs.spring.io/spring-data/elasticsearch/docs/current/reference/html/#preface.versions

springboot使用es

es有两个端口可以用9200和9300(TCP端口后期es官方弃用),这里整合就使用9200了。

这里工具类采用es官方提供的.使用Java High Level REST Client
https://www.elastic.co/guide/en/elasticsearch/client/java-rest/current/index.html

<dependency><groupId>org.elasticsearch.client</groupId><artifactId>elasticsearch-rest-high-level-client</artifactId><version>6.3.2</version>
</dependency>

es的启动类配置
https://www.elastic.co/guide/en/elasticsearch/client/java-rest/current/java-rest-high-getting-started-initialization.html

RestHighLevelClient client = new RestHighLevelClient(RestClient.builder(new HttpHost("localhost", 9200, "http"),new HttpHost("localhost", 9201, "http")));

配置java bean

package com.fchan.espractice.config;import org.apache.http.HttpHost;
import org.elasticsearch.client.RestClient;
import org.elasticsearch.client.RestHighLevelClient;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;@Configuration
public class ElasticSearchConfig {@Beanpublic RestHighLevelClient restHighLevelClient() {RestHighLevelClient client = new RestHighLevelClient(RestClient.builder(new HttpHost("localhost", 9222, "http")));return client;}}

增删改查demo

package com.fchan.espractice;import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fchan.espractice.pojo.User;
import org.apache.http.Header;
import org.apache.http.message.BasicHeader;
import org.elasticsearch.action.admin.indices.create.CreateIndexRequest;
import org.elasticsearch.action.admin.indices.create.CreateIndexResponse;
import org.elasticsearch.action.admin.indices.delete.DeleteIndexRequest;
import org.elasticsearch.action.admin.indices.delete.DeleteIndexResponse;
import org.elasticsearch.action.admin.indices.get.GetIndexRequest;
import org.elasticsearch.action.bulk.BulkRequest;
import org.elasticsearch.action.bulk.BulkResponse;
import org.elasticsearch.action.delete.DeleteRequest;
import org.elasticsearch.action.delete.DeleteResponse;
import org.elasticsearch.action.get.GetRequest;
import org.elasticsearch.action.get.GetResponse;
import org.elasticsearch.action.index.IndexRequest;
import org.elasticsearch.action.index.IndexResponse;
import org.elasticsearch.action.search.SearchRequest;
import org.elasticsearch.action.search.SearchResponse;
import org.elasticsearch.action.update.UpdateRequest;
import org.elasticsearch.action.update.UpdateResponse;
import org.elasticsearch.client.RestHighLevelClient;
import org.elasticsearch.common.unit.TimeValue;
import org.elasticsearch.common.xcontent.XContentType;
import org.elasticsearch.index.query.*;
import org.elasticsearch.index.reindex.DeleteByQueryRequest;
import org.elasticsearch.search.SearchHit;
import org.elasticsearch.search.builder.SearchSourceBuilder;
import org.elasticsearch.search.fetch.subphase.FetchSourceContext;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.util.StringUtils;import java.io.IOException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors;@SpringBootTest
class EsPracticeApplicationTests {@Autowiredprivate RestHighLevelClient restHighLevelClient;@Autowiredprivate ObjectMapper objectMapper;//测试创建索引@Testpublic void testCreateIndex() throws IOException {//创建索引请求CreateIndexRequest indexRequest = new CreateIndexRequest("fchan_test");//执行创建请求 IndicesClientHeader header = new BasicHeader("Content-Type", "application/json");CreateIndexResponse createIndexResponse = restHighLevelClient.indices().create(indexRequest, header);System.out.println(objectMapper.writeValueAsString(createIndexResponse));}//测试索引是否存在@Testpublic void testExistindex() throws IOException {GetIndexRequest request = new GetIndexRequest();request.indices("fchan_test");//执行创建请求 IndicesClientHeader header = new BasicHeader("Content-Type", "application/json");boolean exists = restHighLevelClient.indices().exists(request, header);System.out.println(exists);}//测试删除索引@Testpublic void testDeleteIndex() throws IOException {DeleteIndexRequest request = new DeleteIndexRequest("fchan_test");//执行创建请求 IndicesClientHeader header = new BasicHeader("Content-Type", "application/json");DeleteIndexResponse delete = restHighLevelClient.indices().delete(request, header);System.out.println(objectMapper.writeValueAsString(delete));}//测试添加文档@Testpublic void testAddDocument() throws JsonProcessingException {User user = new User("张11", 3, "aaa");//请求要操作的索引库IndexRequest request = new IndexRequest("fchan_test");//设置请求的规则  put /fchan_test/_doc/1request.id("1");request.timeout(TimeValue.timeValueSeconds(1));request.type("user_2");//将数据放入请求request.source(objectMapper.writeValueAsString(user), XContentType.JSON);try {//发送请求获取响应结果Header header = new BasicHeader("Content-Type", "application/json");IndexResponse index = restHighLevelClient.index(request, header);System.out.println(objectMapper.writeValueAsString(index));} catch (IOException e) {e.printStackTrace();}}//查询文档是否存在@Testpublic void testGetIndex() throws IOException {GetRequest request = new GetRequest("fchan_test", "user", "1");//是否返回 _sourcerequest.fetchSourceContext(new FetchSourceContext(false));//可以指定返回的字段, 即 select xx,xx,xx from xx_table//request.storedFields("_none_");Header header = new BasicHeader("Content-Type", "application/json");boolean exists = restHighLevelClient.exists(request, header);System.out.println(exists);}//查询文档@Testpublic void testQueryDocument() throws IOException {GetRequest request = new GetRequest("fchan_test", "user", "1");Header header = new BasicHeader("Content-Type", "application/json");GetResponse documentFields = restHighLevelClient.get(request, header);System.out.println(objectMapper.writeValueAsString(documentFields));}//更新文档@Testpublic void testUpdateDocument() throws IOException {UpdateRequest request = new UpdateRequest("fchan_test", "user", "1");request.timeout("1s");User user = new User("张3333", 33, "11");request.doc(objectMapper.writeValueAsString(user), XContentType.JSON);Header header = new BasicHeader("Content-Type", "application/json");UpdateResponse update = restHighLevelClient.update(request, header);System.out.println(objectMapper.writeValueAsString(update));}//删除文档@Testpublic void testDeleteDocument() throws IOException {DeleteRequest request = new DeleteRequest("fchan_test", "user", "1");request.timeout(TimeValue.timeValueMillis(1));Header header = new BasicHeader("Content-Type", "application/json");DeleteResponse delete = restHighLevelClient.delete(request, header);System.out.println(objectMapper.writeValueAsString(delete));}//批量新增@Testpublic void testBatchAddDocument() throws IOException {BulkRequest bulkRequest = new BulkRequest();for (int i = 0; i < 10; i++) {//如果存在id一样的数据,那么此次批量新增的时候会冲掉之前的数据,新增的时候有些字段没给值,那么会将这些字段的值冲掉->nullIndexRequest request = new IndexRequest("fchan_test", "user");//这里不给id的话,es会自己给一个随机idrequest.id("" + (i + 1));request.source(objectMapper.writeValueAsString(new User("陈" + (i + 1), i + 1)), XContentType.JSON);bulkRequest.add(request);}BulkResponse bulk = restHighLevelClient.bulk(bulkRequest, new BasicHeader("Content-Type", "application/json"));//是否失败 false代表成功,因为这个方法是 hasFailures 就是问有没有失败的,没有失败的那就是false啊System.out.println(bulk.hasFailures());//全部的返回结果System.out.println(objectMapper.writeValueAsString(bulk));}//带条件查询@Testpublic void testQuery() throws IOException {SearchRequest searchRequest = new SearchRequest("fchan_test");//构建查询条件SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();//高亮//searchSourceBuilder.highlighter()//精确匹配//TermQueryBuilder termQueryBuilder = QueryBuilders.termQuery("name", "张5");//通配符查询,效率比较低WildcardQueryBuilder wildcardQuery = QueryBuilders.wildcardQuery("name.keyword", "*张5*");//匹配所有//MatchAllQueryBuilder matchAllQueryBuilder = QueryBuilders.matchAllQuery();//searchSourceBuilder.query(termQueryBuilder);searchSourceBuilder.query(wildcardQuery);searchSourceBuilder.timeout(new TimeValue(60, TimeUnit.SECONDS));searchRequest.source(searchSourceBuilder);Header header = new BasicHeader("Content-Type", "application/json");SearchResponse search = restHighLevelClient.search(searchRequest, header);System.out.println(objectMapper.writeValueAsString(search));System.out.println("======================================");for (SearchHit hit : search.getHits().getHits()) {System.out.println(hit.getSourceAsMap());}}//批量删除,这里采用先查询出id,再批量删除@Testpublic void testBatchDeleteDocument() throws IOException {SearchRequest searchRequest = new SearchRequest("fchan_test");searchRequest.types("user");SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();searchSourceBuilder.timeout(TimeValue.MINUS_ONE);MatchQueryBuilder matchQueryBuilder = QueryBuilders.matchQuery("name", "张");searchSourceBuilder.query(matchQueryBuilder);searchRequest.source(searchSourceBuilder);Header header = new BasicHeader("Content-Type", "application/json");SearchResponse search = restHighLevelClient.search(searchRequest, header);BulkRequest bulkRequest = new BulkRequest();for (SearchHit hit : search.getHits().getHits()) {DeleteRequest request = new DeleteRequest("fchan_test");request.type("user");request.id(hit.getId());bulkRequest.add(request);}BulkResponse bulk = restHighLevelClient.bulk(bulkRequest, header);System.out.println(objectMapper.writeValueAsString(bulk));}}

springboot使用es入门(6.3.2版本)相关推荐

  1. SpringBoot集成Es使用ElasticSearchTemplate7.x版本自动注入失败解决

    SpringBoot集成Es使用ElasticSearchTemplate7.x版本自动注入失败解决 错误: Caused by: org.springframework.beans.factory. ...

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

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

  3. SpringBoot 操作 ES 进行各种高级查询

    点击上方"Java基基",选择"设为星标" 做积极的人,而不是积极废人! 每天 14:00 更新文章,每天掉亿点点头发... 源码精品专栏 原创 | Java ...

  4. OpenGL ES入门(使用指南)

    转载地址:https://www.ict528.com/wpozv3sz3srrtywpoq1qvuyqooqxz1usvwr2uqoo.html. OpenGL ES 入门 一.前言 OpenGL ...

  5. Java使用Springboot集成Es官方推荐(RestHighLevelClient)

    SpringBoot集成ElasticSearch的四种方式(主要讲解ES官方推荐方式) TransportClient:这种方式即将弃用 官方将在8.0版本彻底去除 Data-Es:Spring提供 ...

  6. OpenGL ES入门详解

    http://blog.csdn.net/wangyuchun_799/article/details/7736928 版权声明:本文为博主原创文章,未经博主允许不得转载.  1.决定你要支持的Ope ...

  7. SpringBoot (一) :入门篇

    SpringBoot (一) :入门篇 什么是spring boot Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程.该框架使 ...

  8. 详细SpringBoot教程之入门(一)

    写在前面 鉴于有人留言说想要学习SpringBoot相关的知识,我这里打算写一个SpringBoot系列的相关博文,目标呢是想让看了这一系列博文的同学呢,能够对SpringBoot略窥门径,这一系列的 ...

  9. SpringBoot 集成 ES 7.6.2 并对字段进行中文和拼音分词处理

    前言 在最近做的流媒体项目中需要集成 ES 搜索引擎,目前 ES 最新版本为 7.x 版本,在以往的项目中我都采用的是 spring 集成的 spring-data-es, 使用自定义类集成 elas ...

最新文章

  1. 【Android UI设计与开发】第02期:引导界面(二)使用ViewPager实现欢迎引导页面
  2. 谈谈Koa 中的next
  3. python barrier option pricing_《Python金融数据分析》书内代码实战与讲解(二)金融衍生物定价...
  4. python输入文字、成为字典_Python 字典(Dictionary)操作详解
  5. 【Python】编程笔记10
  6. 透明(颜色)渐变背景(颜色透明背景),兼容IE8
  7. arduino tft 方向_ESP32在Arduino环境下玩转 LVGL,ESP32移植LVGL详细教程
  8. Kernel Samepage Merging | 同页合并
  9. 物联网卡在建筑行业的应用结果
  10. 只能选择GridView中的一个CheckBox(单选CheckBox)
  11. 中石油企业微信私有版设置服务器,企业微信授权配置教程
  12. 抽象代数学习笔记三《群:对称性变换与对称性群》
  13. python获取中文字体点阵坐标_中文点阵字库的python自动生成程序
  14. OpenStack DVR 原理深入分析
  15. 【调剂】齐齐哈尔大学接收调剂研究生
  16. 查看k8s的etcd数据
  17. 武松杀潘金莲时为何先扯开其衣服?得知真相才明白武松多么机智!
  18. c语言字符串怎么退位,C语言第五六次作业.ppt
  19. 双臂14轴机器人YuMi
  20. 1005【顺序结构】马克与爸爸的年龄问题

热门文章

  1. python输入名字与学号_python课后练习当前目录下有一个文件名为score3.txt的文本文件, 存放着某班学生的学号和其两门专业课的成绩。...
  2. r9 4900h和i710870h哪个好
  3. Java实现定时器(Timer)
  4. 男的朋友和男朋友的区别
  5. 服务机器人想要普及?自主行走是前提
  6. int const*与int * const
  7. IDEA配置java环境
  8. web开发重点,html5培训机构
  9. 塑胶模具基本知识以及技术应用
  10. 名爵如何解除限速_电动车解除限速的三种方法,师傅一次性全教给