Spring Boot 入门(十三)使用Elasticsearch

maven

<dependency>
    <groupId>org.elasticsearch.clientgroupId>
    <artifactId>elasticsearch-rest-high-level-clientartifactId>
dependency>
<dependency>
    <groupId>com.alibabagroupId>
    <artifactId>fastjsonartifactId>
    <version>1.2.76version>
dependency>

配置

package com.example.demo.elasticsearch;

import org.apache.http.HttpHost;
import org.elasticsearch.client.RequestOptions;
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 LipsuperElasticsearchConfig {
    public static final RequestOptions COMMON_OPTIONS;

    static {
        RequestOptions.Builder builder = RequestOptions.DEFAULT.toBuilder();
        COMMON_OPTIONS = builder.build();
    }

    @Bean
    public RestHighLevelClient esClient() {
        RestHighLevelClient client = new RestHighLevelClient(
                RestClient.builder(
                        // 单个节点配置
                        new HttpHost("192.168.233.128", 9200, "http")));

        return client;
    }
}

使用

@Autowired
private RestHighLevelClient restHighLevelClient;

/**
 * getStudentES
 *
 * @return
 * @throws IOException
 */
@RequestMapping("/getStudentES")
public List getStudentES() throws IOException {
    String index = "studentinfo";
    //先查询是否存在
    GetRequest getRequest = new GetRequest(index, "2");
    GetResponse getResponse = restHighLevelClient.get(getRequest, LipsuperElasticsearchConfig.COMMON_OPTIONS);
    StudentPO studentPO = JSON.parseObject(getResponse.getSourceAsString(), StudentPO.class);
    if (studentPO != null) {
        return Arrays.asList(studentPO);
    }
    //不存在则添加
    List studentList = Arrays.asList(
            new StudentPO() {{
                setId(1L);
                setName("张三");
            }},
            new StudentPO() {{
                setId(2L);
                setName("李四");
            }});

    // 往es中批量保存数据
    BulkRequest bulkRequest = new BulkRequest();
    for (StudentPO student : studentList) {
        IndexRequest indexRequest = new IndexRequest(index);
        indexRequest.id(student.getId().toString());
        String u = JSON.toJSONString(student);
        indexRequest.source(u, XContentType.JSON);
        bulkRequest.add(indexRequest);
    }
    BulkResponse bulk = restHighLevelClient.bulk(bulkRequest, LipsuperElasticsearchConfig.COMMON_OPTIONS);
    // 可选操作
    boolean b = bulk.hasFailures();
    System.out.println(b);
    return studentList;
}

Spring Boot 入门(十三)使用Elasticsearch

Original: https://www.cnblogs.com/xiaoxiaoyu0707/p/15720769.html
Author: 小小渔
Title: Spring Boot 入门(十三)使用Elasticsearch

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/572280/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • NO8 电动汽车的创意构想

    (本文为ppt,可以在文件中看到对应ppt文件) 大哉乾元 2016/7/19 作者原创转载请注明出处 电动汽车的构想 李海波 Zte_lhb@126.com 起因 — 上周去超市…

    Java 2023年6月8日
    084
  • MySQL中的WHERE和HAVING

    使用 GROUP BY语句时,有时会同时使用 WHERE和 HAVING,常常会因为搞不清楚要用哪个而写错,这里记录一下 TL;NRs WEHRE语句必须在 GROUP BY之前,…

    Java 2023年6月9日
    069
  • 别再重复造轮子了,几个值得应用到项目中的 Java 开源库送给你

    我是风筝,公众号「古时的风筝」。文章会收录在 JavaNewBee 中,更有 Java 后端知识图谱,从小白到大牛要走的路都在里面。公众号回复『666』获取高清大图。 风筝我作为一…

    Java 2023年5月29日
    065
  • 这样的阅读工具,人手一个不过分吧?

    无意间被同事看到,惊呼,你是怎么在网页上做标记的? 这其实是我个人浏览网页,每日浏览大量信息,从中标记重要信息必备的工具 个人痛点 每日要浏览很多网页或者查阅资料,浏览过后重新定位…

    Java 2023年6月7日
    097
  • Mac下打开eclipse 始终提示 你需要安装Java SE 6 Runtime

    Mac下打开eclipse 始终提示 你需要安装Java SE 6 Runtime 周银辉 我的mac os 版本是10.9.2, JDK配置得好好的,但打开eclipse时还是提…

    Java 2023年5月29日
    077
  • MySQL中IN()按照指定列指定规则排序

    404. 抱歉,您访问的资源不存在。 可能是网址有误,或者对应的内容被删除,或者处于私有状态。 代码改变世界,联系邮箱 contact@cnblogs.com 园子的商业化努力-困…

    Java 2023年6月7日
    079
  • 2.servlet实现用户登录功能

    在该案例中,通过servlet实现了用户登录的功能。主要涉及前端页面请求数据,servlet程序处理请求,业务逻辑层调用相关的dao层,在数据库提取数据并return给servic…

    Java 2023年6月8日
    094
  • Java面向对象基础

    变量与局部变量的区别: 定义的位置不同 局部变量:定义的位置是在方法内部或者是方法构造中成员变量:成员变量定义在class里面方法外面默认值 局部变量:无默认值成员变量:字面值与数…

    Java 2023年6月5日
    056
  • Vue编程式路由导航和路由守卫

    具体编码: methods: { pushShow(m) { this.$router.push({ name: ‘msg-d’, // 就是路由的名称,不能使用path para…

    Java 2023年6月13日
    084
  • Java中的Lock锁

    Lock锁介绍: 在java中可以使用 synchronized 来实现多线程下对象的同步访问,为了获得更加灵活使用场景、高效的性能,java还提供了Lock接口及其实现类Reen…

    Java 2023年5月29日
    087
  • InnoDB学习(六)之数据库锁

    InnoDB存储引擎的默认隔离级别事可重复读,MVCC多版本并发控制仅仅解决了快照读情况下的数据隔离,而对于当前读,InnoDB通过锁来进行并发控制。 InnoDB锁 本文主要参考…

    Java 2023年6月8日
    087
  • java如何对接企业微信

    前言 最近实现社群对接企业微信,对接的过程遇到一些点,在此记录。 企业微信介绍 企业微信具有和微信一样的体验,用于企业内部成员和外部客户的管理,可以由此构建出社群生态。企业微信提供…

    Java 2023年5月29日
    0131
  • 二维数组与稀疏数组的互转

    二维数组与稀疏数组的互转 转换思路 二维数组转稀疏数组的思路: 遍历原始的二维数组,得到有效数据的个数sum,根据sum就可以创建稀疏数组sparseArr int[sum+1][…

    Java 2023年6月13日
    068
  • .NET 7 性能改进 — 至今为止最快的.NET平台

    2022年8月31日 Stephen Toub 发布的关于 .NET 7 性能改进的博客, 核心主题是 .NET 7 速度很快。 这篇博客非常的长,我尝试将它拷贝到Word 里,拷…

    Java 2023年6月5日
    099
  • 日常踩坑_@ConfigurationProperties显示prefix must be in canonical form

    在使用 @ConfigurationProperties时,好死不死报了一个我看不懂的红,像这样 我自然是一副很懵逼的状态,红线上写的错是prefix must be in can…

    Java 2023年6月7日
    084
  • java数据类型转换问题

    我们知道java中的各个数据类型的取值范围不同,可以理解成容量大小,而针对容量大小可以对他们进行一个由低到高的排序,也就是优先级。 优先级 低——&#821…

    Java 2023年6月13日
    097
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球