windows中下载安装ES并使用SpringBoot整合ES检索功能(包含mybatis)

1这只是简单的用ES,下一篇会推出数据同步

如果我们直接去访问数据库,会对数据库造成很大的负担。如果只是查询信息或者模糊查询完全可以用ES检索功能来实现。首先就是查询速度更快,其次就是减少查询数据库的次数。

首先下载Elasticsearch,个人是不推荐去官网下载,首先就是太慢了。推荐用华为云下载。

Index of elasticsearch-local (huaweicloud.com)

使用ES的前提是有jdk,如果用SpringBoot项目的话,推荐jdk11以上。

下载windows版本的话只要下载zip在解压 。完成后,先进入下面config下面,然后

进去,把下面都改成false,

完事后,返回上一级,进入bin目录。双击下面的文件就可以打开ES

 浏览器中访问  127.0.0.1:9200  如果出现下面的情况就是成功了

下面我们安装kibana来图形化操作ES

一样的,进入华为云镜像下载

Index of kibana-local (huaweicloud.com)

注意!!!!这里的kibana的版本一定要与Elasticsearch的版本相同,不然会报错!!!!

一样的,解压后直接进入,双击kibana.bat。等待运行完毕

进入http://localhost:560fan

 

就是配置完成了。

这时我们就可以正常使用ES的功能了,下面开始整合。以下是测试类中进行!!

在创建SpringBoot项目的时候,勾选下面的依赖项

导入MyBatis坐标

 <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.24</version>
        </dependency>

        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>3.0.0</version>

导入application.yml文件

spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/自己的数据库名
    username: root
    password: root
  elasticsearch:
    uris: http://127.0.0.1:9200

创建一个实体类User

package com.example.demo1.entity;

import lombok.Data;
import org.springframework.data.annotation.Id;
import org.springframework.data.elasticsearch.annotations.Document;

@Data
@Document(indexName = "user-demo")
public class User {
    @Id
    private Integer id;
    private Integer age;
    private String address;
    private String gender;
    private String username;

    public User(Integer id, Integer age, String address, String gender, String username) {
        this.id = id;
        this.age = age;
        this.address = address;
        this.gender = gender;
        this.username = username;
    }

    public User() {
    }
}

创建一个ES接口类

package com.example.demo1.mapper;

import com.example.demo1.entity.User;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.elasticsearch.repository.ElasticsearchRepository;
import org.springframework.stereotype.Indexed;
import org.springframework.stereotype.Repository;

import java.util.List;

@Repository
public interface UserMapper extends ElasticsearchRepository<User, Integer> {
    List<User> findByUsername(String username);
    Page<User> findByUsernameContaining(String username, Pageable page);
}

创建一个MyBatis接口类

package com.example.demo1.mapper;
import com.example.demo1.entity.User;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;

import java.util.List;

@Mapper
    public interface UserMyBatis {
        @Select("select * from user1")
        List<User> select();

    }


在测试类里面加入以下代码

package com.example.demo1;

import co.elastic.clients.elasticsearch.core.IndexRequest;
import com.example.demo1.entity.User;
import com.example.demo1.mapper.UserMapper;
import com.example.demo1.mapper.UserMyBatis;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.data.domain.PageRequest;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Optional;

@SpringBootTest
class Demo1ApplicationTests {

    @Autowired
    UserMapper userMapper;

   @Autowired
    UserMyBatis userMyBatis;

    @Test
    void contextLoads(List<User> list) {

        for (User user:list){
            userMapper.save(new User(user.getId(), user.getAge(), user.getAddress(), user.getGender(), user.getUsername()));
        }

    }
   @Test
    void select(){
        List<User> users = userMyBatis.select();
        contextLoads(users);

    }

}

启动测试!!我们打开kibana的浏览器窗口,找到下面的Dev Tools,点开

输入   GET /user-demo/_search 就可以看到下面的代码。说明我们就成功了

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值