项目git地址:https://github.com/zhangjq-sss/zjq_spring-boot-cloud.git
一、配置es环境
1.选择你要下的版本,下载地址:https://www.elastic.co/downloads/past-releases
2.配置文件地址:/config/elasticsearch.yml
二、配置es-head插件环境
1.下载地址:https://github.com/mobz/elasticsearch-head
2.启动命令
cd elasticsearch-head //进入目录
npm install
npm run start
三、整合es 与es-head插件
1.修改es配置文件elasticsearch.yml,增加如下参数:
# 集群名称
cluster.name: zjq
# master名称
node.name: master
node.master: truenetwork.host: 127.0.0.1
http.cors.enabled: true
http.cors.allow-origin: "*"
#不加上,head插件读取不到
2.进入es/bin目录执行elasticsearch,es启动,浏览器输入地址:http://localhost:9200/
3.启动head插件,访问http://localhost:9100/
四、es-head插件使用
集群名称:zjq 索引名称(数据库):user 类型Type(表名):t_users
1.为t_users添加字段(说明:es自带id,开始没考虑到)
请求地址:user/_mapping/t_users put
{"properties":{"id":{"type":"long"},"userName":{"type":"string"},"password":{"type":"string"},"createTime":{"type":"date","format":"yyyy-MM-dd HH:mm:ss"},"lastUpdateTime":{"type":"date","format":"yyyy-MM-dd HH:mm:ss"},"version": {"type":"integer"},"deleted":{"type":"integer"}}}
2.给t_users增加数据
请求地址:user/t_users post
{"id":1,"userName":"金李","password":"123456","createTime":"2018-11-11 12:22:40","version":1,"lastUpdateTime":"2018-12-02 12:00:00","deleted":0}
五、springboot整合es
pom.xml
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-elasticsearch</artifactId>
</dependency>
<!-- Spring Boot Web 依赖 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
配置文件
# elasticsearch集群名称,默认的是elasticsearch
spring.data.elasticsearch.cluster-name=zjq
#节点的地址 注意api模式下端口号是9300,千万不要写成9200
spring.data.elasticsearch.cluster-nodes=127.0.0.1:9300
#是否开启本地存储
spring.data.elasticsearch.repositories.enable=true
实体
package org.eureka.elasticsearch.domain;
import java.io.Serializable;
import org.springframework.data.annotation.Id;
import org.springframework.data.elasticsearch.annotations.Document;
import lombok.Data;
@Data
@Document(indexName="user", type = "t_users")
public class User implements Serializable{
/**
*
*/
private static final long serialVersionUID = 1L;
@Id
private Long id;
private String userName;
private String password;
private String createTime;
private Integer version;
private String lastUpdateTime;
private int deleted;
}
dao层
package org.eureka.elasticsearch.dao;
import org.eureka.elasticsearch.domain.User;
import org.springframework.data.elasticsearch.repository.ElasticsearchRepository;
import org.springframework.stereotype.Repository;
@Repository
public interface UserDao extends ElasticsearchRepository<User, Long>{
User findById(Long id);
}
service层
package org.eureka.elasticsearch.service;
import org.eureka.elasticsearch.domain.User;
public interface UserService {
Long save(User user);
boolean delete(User user);
boolean update(User user);
User queryUserBYId(Long id);
}
实现类
package org.eureka.elasticsearch.service.impl;
import org.eureka.elasticsearch.dao.UserDao;
import org.eureka.elasticsearch.domain.User;
import org.eureka.elasticsearch.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service
public class UserServiceImpl implements UserService{
@Autowired
private UserDao userDao;
@Override
public Long save(User user) {
if (user!=null&&user.getId()!=null) {
return userDao.save(user).getId();
}
return 0l;
}
@Override
public boolean delete(User user) {
if (user!=null&&user.getId()!=null) {
userDao.delete(user.getId());
return true;
}
return false;
}
@Override
public boolean update(User user) {
if (user!=null&&user.getId()!=null) {
userDao.save(user);
return true;
}
return false;
}
@Override
public User queryUserBYId(Long id) {
return userDao.findById(id);
}
}
控制层
package org.eureka.elasticsearch.web;
import java.util.Date;
import org.eureka.elasticsearch.domain.User;
import org.eureka.elasticsearch.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.zjq.euraka_core.utils.DateUtil;
@RestController
@RequestMapping("/es")
public class UserController {
@Autowired
private UserService userService;
/**
* 添加
* @return
*/
@RequestMapping("/add")
public String add() {
User user = new User();
user.setId(3l);
user.setUserName("hello");
user.setPassword("123456");
user.setCreateTime(DateUtil.formatDateTime(new Date()));
user.setDeleted(0);
user.setVersion(1);
user.setLastUpdateTime(DateUtil.formatDateTime(new Date()));
userService.save(user);
return "success";
}
/**
* 删除
* @return
*/
@RequestMapping("/delete")
public String delete() {
User user = new User();
user.setId(3l);
userService.delete(user);
return "success";
}
/**
* 局部更新
* @return
*/
@RequestMapping("/update")
public String update() {
User user = userService.queryUserBYId(3l);
user.setUserName("word");
userService.update(user);
return "success";
}
/**
* 查询
* @return
*/
@RequestMapping("/query")
public String query(Long id) {
User user = userService.queryUserBYId(id);
if (user==null) {
return "该id不存在!";
}
String usernfo = user.toString();
return usernfo;
}
}
启动类
package org.eureka.elasticsearch;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.data.elasticsearch.repository.config.EnableElasticsearchRepositories;
@SpringBootApplication
@EnableElasticsearchRepositories
public class EsApp {
public static void main(String[] args) {
SpringApplication.run(EsApp.class,args);
}
}
测试结果页面
查询