spring boot>>整合elasticsearch

在这一篇文章开始之前,你需要先安装一个ElasticSearch,如果你是windows环境可以参考windows上安装 ElasticSearch-Head插件和Elasticsearch这篇文章。

官方介绍ElasticSearch:

ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是当前流行的企业级搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。
我们建立一个网站或应用程序,并要添加搜索功能,但是想要完成搜索工作的创建是非常困难的。我们希望搜索解决方案要运行速度快,我们希望能有一个零配置和一个完全免费的搜索模式,我们希望能够简单地使用JSON通过HTTP来索引数据,我们希望我们的搜索服务器始终可用,我们希望能够从一台开始并扩展到数百台,我们要实时搜索,我们要简单的多租户,我们希望建立一个云的解决方案。因此我们利用Elasticsearch来解决所有这些问题及可能出现的更多其它问题。

1、启动 ElasticSearch服务。

这篇文章简单的介绍一下 spring boot整合Elasticsearch。

2、创建项目,pom文件中添加以下依赖

		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-data-elasticsearch</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>

		<dependency>
			<groupId>org.projectlombok</groupId>
			<artifactId>lombok</artifactId>
			<optional>true</optional>
		</dependency>

3、配置文件

server.port=8074

spring.data.elasticsearch.repositories.enabled=true
spring.data.elasticsearch.cluster-name=my-el
#9300与9200区别
#9300端口:ES节点之间的通讯使用,是TCP协议端口考号,ES集群之间通讯端口号
#9200端口: ES节点和 外部通讯使用,暴露ES restful 接口端口号
spring.data.elasticsearch.cluster-nodes=192.168.41.26:9300

4、创建用户实体

/**
 * 
 * 功能:<br>
 * 作者:小码张<br>
 * 时间:2019年3月20日<br>
 * 版本:1.0<br>
 *
 */
@Document(indexName="userinfo", type="user")
//indexName索引名称 可以理解为数据库名 必须为小写 不然会报org.elasticsearch.indices.InvalidIndexNameException异常
//type类型 可以理解为表名
@Data
public class UserInfo {
	
	@Id
        // @Id注解加上后,在Elasticsearch里相应于该列就是主键了,在查询时就可以直接用主键查询,后面一篇会讲到。其实和mysql非常类似,基本就是一个数据库。
	private String id;
	private String name;
	private String age;
}

5、创建UserRepository,继承CrudRepository,代码如下:

/**
 * 
 * 功能:CrudRepository内部封装了对 Elasticsearch 的CRUD<br>
 * 作者:小码张<br>
 * 时间:2019年3月20日<br>
 * 版本:1.0<br>
 *
 */
@Component
public interface UserRepository extends CrudRepository<UserInfo, String>{

}

6、最后新建一个controller进行测试

@RestController
public class EsController {

	@Autowired
	private UserRepository userRepository;
	
	@RequestMapping("/save")
	public String saveUser() {
		UserInfo user = new UserInfo();
		user.setId("456321");
		user.setName("张三");
		user.setAge("18");
		userRepository.save(user);
		return "sueecss";
	}
	
	@RequestMapping("/findById")
	public Optional<UserInfo> findById() {
		return userRepository.findById("456321");
	}
}

测试结果

注意:我的 Spring boot 版本是 2.0.1.RELEASE。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值