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。等待运行完毕
就是配置完成了。
这时我们就可以正常使用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 就可以看到下面的代码。说明我们就成功了