前言:
学习路径:https://www.bilibili.com/video/av45584656 码家学院的视频
这次是记录Spring Boot 整合 ElasticSearch
目录
1.添加pom文件
2.配置实体类和注解
3.测试
4. 注意:
最主要的依赖是 elasticsearch的:
org.springframework.boot
spring-boot-starter-data-elasticsearch
完整的依赖:
org.springframework.boot
spring-boot-starter-parent
2.0.0.RELEASE
org.springframework.boot
spring-boot-starter-data-elasticsearch
org.springframework.boot
spring-boot-starter-web
org.springframework.boot
spring-boot-devtools
runtime
true
org.projectlombok
lombok
true
org.springframework.boot
spring-boot-starter-test
test
org.springframework.boot
spring-boot-maven-plugin
1.配置yml
server:
port: 8090
spring:
data:
elasticsearch:
cluster-name: elasticsearchCluster //集群名称
cluster-nodes: 192.168.137.133:9300 //自己的ip地址
关于cluster-name 是需要 在 elasticsearch的配置文件进行修改
先退出 kibana 服务和 elasticsearch 服务
然后 进入自身的ela的config文件夹
vim elasticsearch.yml
可以看到有一个cluster.name
配置好自己的 保存 然后 用非root启动 elasticsearch 。
root 启动 kibana 就好了
2.编写实体类
我这里直接定义的user类 对应elasticsearch中的文档 (User)
我就直接定义User了
@Data
//有点像JPA的注解
//@文档的名称是guoergou的那个 类型是user类型
@Document(indexName = "guoergou",type = "user")
public class User {
@Id // id 是主键
private String id ;
private String name;
private String sex;
private int age;
}
3.编写Dao层 ,用于连接ela文档数据库
public interface UserDao extends CrudRepository {
}
需要注意导入的依赖是 es的
import com.zqj.elasticsearch.entity.User;
import org.springframework.data.repository.CrudRepository;
新建一个接口命名为UserRepository,让该接口继承CrudRepository接口,以持久化对象User作为CrudRepository的第一个类型参数,表示当前所操作的持久化对象类型,Integer作为CrudRepository的第二个类型参数,用于指定ID类型 我指定的是String 类型,因为对应的User对象的id类型就是String类型 所以定义的是String
4.定义 controller,用于接收前台的请求来获取数据
@RestController
public class UserController {
@Autowired
private UserDao userDao; // 注解dao层
@RequestMapping("/addUser")
public User addUser(@RequestBody User user) { //使用post方式传递json串格式数据过来
return userDao.save(user);
}
@RequestMapping("/findUser")
public User selectUserById(@RequestParam("id") String id) { //使用get请求传过来
return userDao.findById(id).get();
}
}
5.application主方法添加注解 去扫描 dao层
@SpringBootApplication
//开启es依赖 扫描的包就是dao层中的类
@EnableElasticsearchRepositories(basePackages = "com.zqj.elasticsearch.dao")
public class ElasticsearchApplication {
public static void main(String[] args) {
SpringApplication.run(ElasticsearchApplication.class, args);
}
}
简单的demo就写好了
用来测试下
使用postman发送数据 因为在前面定义的是一个body 所以需要使用post方式发送数据
发送成功后 返回的是成功的实体
然后用get方式去查询一下
看到也能得到 说明刚才是存储成功的。
9300与9200区别
9300端口: ES节点之间通讯使用
9200端口: ES节点 和 外部 通讯使用
9200式HTTP协议,主要用作和外部通讯 9300通过TCP协议进行通讯,jar包通过tcp协议 ES集群之间也是通过9300的tcp进行通讯
这节暂时记录如上