springboot集成es详解

1.导入 maven依赖

 <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-dataelasticsearch</artifactId>
<dependency>

注意 保持版本一致 我用的是7.6.2版本的

<properties>
      <java.version>1.8</java.version>
       <elasticsearch.version>7.6.2</elasticsearch.version>
     <!--自定义版本 保持版本一致-->
    </properties>

2.编写config类 相当于 xlm导入文档

@Configuration
public class ESConfig {

  @Bean
  public RestHighLevelClient restHighLevelClient (){
    RestHighLevelClient restHighLevelClient = new RestHighLevelClient(
        RestClient.builder(
            new HttpHost("localhost",9100,"http")
        )
    );
    return restHighLevelClient;
  }

注意这里的端口号 一定不能搞错

3测试书写 添加 索引

@Test
  void contextLoads() throws IOException {

    //1.创建索引的请求
    CreateIndexRequest createIndexRequest = new CreateIndexRequest("mao");
    //2.执行请求 获得响应
    CreateIndexResponse createIndexResponse = estHighLevelClient.indices().create(createIndexRequest, RequestOptions.DEFAULT);
    System.out.println(createIndexResponse);
  }

4.查询索引是否存在

@Test //查询索引是否存在
  void existIndex() throws IOException {
    GetIndexRequest getIndexRequest = new GetIndexRequest("test"); //获得索引请求
    boolean exists = estHighLevelClient.indices().exists(getIndexRequest, RequestOptions.DEFAULT);
    System.out.println(exists);
  }

5.删除索引

@Test//删除
  void delIndex() throws IOException {
    DeleteIndexRequest deleteIndexRequest = new DeleteIndexRequest("test");
    AcknowledgedResponse delete = estHighLevelClient.indices().delete(deleteIndexRequest, RequestOptions.DEFAULT);
    System.out.println(delete);
    System.out.println(delete.isAcknowledged());
  }

6.添加文档数据 第一 要设置实体类 导入阿里巴巴JSON 工具类

 @Data
@Accessors(chain = true) //实体类

public class User {
  private String name;
  private String age;
}
@Test //添加文档
  void addDocument() throws IOException {
    //创建对象啊
    User user = new User().setAge("13").setName("mao");
    //创建请求
    IndexRequest request = new IndexRequest("mao");
    //设置规则 PUT /test/_doc/id
    request.id("1");
    request.timeout("1s");
    //将请求放入josn
    request.source(JSON.toJSONString(user),XContentType.JSON);
    //客户端发送请求
    IndexResponse index = estHighLevelClient.index(request, RequestOptions.DEFAULT);
    //获取响应结果
    System.out.println(index.toString());
    System.out.println(index.status());
 <dependency>
      <groupId>com.alibaba</groupId>
      <artifactId>fastjson</artifactId>
      <version>1.2.47</version>
    </dependency>

7.修改文档

@Test //Update 文档操作
  void GengXin() throws IOException {
    UpdateRequest updateRequest = new UpdateRequest("mao","1"); //请求更新文档
    updateRequest.timeout("1s"); //设置超时时间
    User user= new User().setName("张三").setAge("26");
    updateRequest.doc(JSON.toJSONString(user),XContentType.JSON); //将对象封装丢进去 XContentType方法 将要传输的数据进行告知
    UpdateResponse update = estHighLevelClient.update(updateRequest, RequestOptions.DEFAULT);//发送请求
    System.out.println(update);
  }

8.批量增加

@Test //批量丢入数据
  void TestBulkIndexRequest() throws IOException {
    BulkRequest bulkRequest = new BulkRequest(); //大批量导入数据 本质是for循环
    bulkRequest.timeout("10s");
    ArrayList<User> users = new ArrayList<>();
    for(int i=0;i<10;i++){
      users.add(new User().setName("张三"+i+"号").setAge(""+i));
    }

    //批处理请求
    for(int i =0;i<users.size();i++){
      bulkRequest.add(
          new IndexRequest("mao")
          .id(""+(i+1))
          .source(JSON.toJSONString(users.get(i)),XContentType.JSON)
      );

    }
    BulkResponse bulk = estHighLevelClient.bulk(bulkRequest, RequestOptions.DEFAULT);
    System.out.println(bulk);
    System.out.println(bulk.hasFailures());//查询是否失败

  }

9.精确查询

 @Test//查询
  void testSearch() throws IOException {
    SearchRequest searchRequest = new SearchRequest(ESConstant.ESConstant);
    SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
    //精确查询条件

    TermQueryBuilder termQueryBuilder = QueryBuilders.termQuery("age", "0");
    //查询所有
//    MatchAllQueryBuilder matchAllQueryBuilder = QueryBuilders.matchAllQuery();
     searchSourceBuilder.query(termQueryBuilder) ;//将规则加入
//     searchSourceBuilder.from(); //设置分页
//     searchSourceBuilder.size();
     searchSourceBuilder.timeout(new TimeValue(60, TimeUnit.SECONDS));//设置高并发下的延迟时间
     searchSourceBuilder.highlighter();
     searchRequest.source(searchSourceBuilder);//将刚刚做的请求体放入
    SearchResponse search = estHighLevelClient.search(searchRequest, RequestOptions.DEFAULT);//请求信息
    System.out.println(JSON.toJSONString(search.getHits()));//返回查询情况 getHits 封装返回对象

    for( SearchHit SearchHit:search.getHits().getHits() ){
      System.out.println(SearchHit.getSourceAsMap());

    }
  } 

到此这篇关于springboot集成es详解的文章就介绍到这了,更多相关springboot集成es内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Springboot集成restTemplate过程详解

    一restTemplate简介 restTemplate底层是基于HttpURLConnection实现的restful风格的接口调用,类似于webservice,rpc远程调用,但其工作模式更加轻量级,方便于rest请求之间的调用,完成数据之间的交互,在springCloud之中也有一席之地.大致调用过程如下图 二restTemplate常用方法列表 forObeject跟forEntity有什么区别呢?主要的区别是forEntity的功能更加强大一些,其返回值是一个ResponseEntit

  • SpringBoot集成Swagger2实现Restful(类型转换错误解决办法)

    pom.xml增加依赖包 <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> <version>2.2.2</version> </dependency> <dependency> <groupId>io.springfox</groupId> <

  • springboot集成ES实现磁盘文件全文检索的示例代码

    最近有个朋友咨询如何实现对海量磁盘资料进行目录.文件名及文件正文进行搜索,要求实现简单高效.维护方便.成本低廉.我想了想利用ES来实现文档的索引及搜索是适当的选择,于是就着手写了一些代码来实现,下面就将设计思路及实现方法作以介绍. 整体架构 考虑到磁盘文件分布到不同的设备上,所以采用磁盘扫瞄代理的模式构建系统,即把扫描服务以代理的方式部署到目标磁盘所在的服务器上,作为定时任务执行,索引统一建立到ES中,当然ES采用分布式高可用部署方法,搜索服务和扫描代理部署到一起来简化架构并实现分布式能力. 磁

  • springboot集成es详解

    1.导入 maven依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-dataelasticsearch</artifactId> <dependency> 注意 保持版本一致 我用的是7.6.2版本的 <properties> <java.version>1.8</jav

  • Java SpringBoot 集成 Redis详解

    目录 1.概述 Redis是什么? Redis能该干什么? 特性 2.测试Redis 3.自定义redisTemplate 1.概述 Redis是什么? Redis(Remote Dictionary Server ),即远程字典服务. 是一个开源的使用ANSI C语言编写.支持网络.可基于内存亦可持久化的日志型.Key-Value数据库,并提供多种语言的API. 与memcached一样,为了保证效率,数据都是缓存在内存中.区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加

  • Java SpringBoot自定义starter详解

    目录 一.什么是SpringBoot starter机制 二.为什么要自定义starter ? 三.什么时候需要创建自定义starter? 四.自定义starter的开发流程(案例:为短信发送功能创建一个starter) 1.细节:命名规范 2.必须引入的依赖 3.编写相关属性类(XxxProperties):例如 SmsProperties.java 4.编写Starter项目的业务功能 5.编写自动配置类AutoConfig 6.编写spring.factories文件加载自动配置类 7.打

  • Spring集成Redis详解代码示例

    本文章从头开始介绍Spring集成Redis的示例. Eclipse工程结构 如下图为我的示例工程的结构图,采用Maven构建.其中需要集成Spring,因此需要beans.xml文件配置spring的依赖注入,redis.properties配置连接服务器的配置信息. 其中工程中beans.xml和redis.properties文件直接放在了根目录,有需要的读者可以放到resource目录中. POM依赖 如下为示例POM依赖,Spring集成redis需要依赖的包为:jedis包,spri

  • Spring Web MVC和Hibernate的集成配置详解

    网上看到很多关于Spring与Hibernate的集成的文章,奈何由于那些文章写作时间较早,很多都是Spring 3 和Hibernate 4等较旧的版本.所以我在这里使用更新的版本来说明一下. 添加项目依赖 首先我们需要一个Java Web项目,最好使用Maven或Gradle构建工具,方便我们解决软件依赖.我在这里使用Gradle构建工具,构建脚本如下.我们只要引入spring-webmvc和spring-orm这两个包,其他的Spring依赖会自动由构建工具解决.然后还需要引入数据源.Hi

  • SpringBoot 统一异常处理详解

    代码结构 配置pom文件 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/

  • Spring cloud config集成过程详解

    这篇文章主要介绍了spring cloud config集成过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 Spring Cloud Config 分为 Config Server: 分布式配置中心,是一个独立的微服务应用,用来连接配置服务器并为客户端提供获取配置信息 Config Client: 通过指定配置中心来管理应用资源,以及与业务相关的配置内容,并在启动的时候从配置中心获取和加载配置信息 Spring boot版本2.1.8.

  • Java下SpringBoot创建定时任务详解

    序言 使用SpringBoot创建定时任务非常简单,目前主要有以下三种创建方式: 一.基于注解(@Scheduled) 二.基于接口(SchedulingConfigurer) 前者相信大家都很熟悉,但是实际使用中我们往往想从数据库中读取指定时间来动态执行定时任务,这时候基于接口的定时任务就派上用场了. 三.基于注解设定多线程定时任务 一.静态:基于注解 基于注解@Scheduled默认为单线程,开启多个任务时,任务的执行时机会受上一个任务执行时间的影响. 1.创建定时器 使用SpringBoo

  • SpringBoot任务之详解邮件任务

    01: 异步任务 02: 定时任务 一.SpringBoot--任务:邮件任务 1.1 添加依赖(增加邮件支持) pom.xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-mail</artifactId> </dependency> 1.2 获取第三方授权码 1.2.1 登录QQ邮箱 1.2.2 点

  • SonarQube实现自动化代码扫描安装及几种集成使用详解

    目录 1.安装Findbugs插件 2.IDEA集成 3.Gitlab集成 4.Jenkins集成 1.安装Findbugs插件 Sonar有自己的默认的扫描规则,可通过安装Findbugs插件,来提升代码漏洞扫描能力. (1)进入配置-->应用市场,搜索Findbugs,点击安装即可. 在质量配置中,设置FindBugs Security Audit为默认. (2)扫描效果测试 默认的扫描规则与设置FindBugs Security Audit的对比: 2.IDEA集成 通过IDEA集成Son

随机推荐