小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。
前言
各位程序猿、程序媛,大家1024节日快乐。1024恰逢周末。祝大家永无BUG。本章介绍Spring Boot集成Elasticsearch。下面开始正题。
ES简介
什么是ES
Elasticsearch 是一个分布式、高扩展、高实时的搜索与数据分析引擎。它能很方便的使大量数据具有搜索、分析和探索的能力。充分利用Elasticsearch的水平伸缩性,能使数据在生产环境变得更有价值。Elasticsearch 的实现原理主要分为以下几个步骤,首先用户将数据提交到Elasticsearch 数据库中,再通过分词控制器去将对应的语句分词,将其权重和分词结果一并存入数据,当用户搜索数据时候,再根据权重将结果排名,打分,再将返回结果呈现给用户。
ES特点
- 高度的可伸缩性
- 开箱即用、搭建简单
- 与数据库互补
- 将全文检索、数据分析、分布式技术融合
快速开始
引入依赖
引入依赖,其只能怪依赖的版本号需要与Spring Boot使用的版本号相对应,如果版本号不匹配,可能会出现莫名的异常。本次Demo仅做演示使用,所以使用的是7.6.1。SpringBoot 使用的是2.3.0.RELEASE。
<!-- ES start -->
<dependency>
<groupId>org.elasticsearch.client</groupId>
<artifactId>elasticsearch-rest-high-level-client</artifactId>
<version>7.6.1 </version>
</dependency>
<!-- ES end -->
<dependency>
<groupId>commons-httpclient</groupId>
<artifactId>commons-httpclient</artifactId>
<version>3.1</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.74</version>
</dependency>
配置参数
Elasticsearch 9200端口是用来让HTTP REST API来访问ElasticSearch,而9300端口是传输层监听的默认端口,其中需要注意的是 cluster.name需要与config/elasticsearch.yml中的cluster.name一致。
elasticsearch.ip=127.0.0.1
elasticsearch.port=9300
elasticsearch.pool=10
elasticsearch.cluster.name=my-application
配置类
@Slf4j
@Configuration
public class ElasticSearchConfig {
/**
* elk集群地址
*/
@Value("${elasticsearch.ip}")
private String hostName;
/**
* 端口
*/
@Value("${elasticsearch.port}")
private int port;
/**
* 集群名称
*/
@Value("${elasticsearch.cluster.name}")
private String clusterName;
/**
* 连接池
*/
@Value("${elasticsearch.pool}")
private String poolSize;
/**
* Bean name default 函数名字
*
* @return
*/
@Bean
public RestHighLevelClient restHighLevelClient(){
RestHighLevelClient client =new RestHighLevelClient(RestClient.builder(new HttpHost(hostName,port,"http")));
return client;
}
}
编写测试类
@Autowired
private RestHighLevelClient client;
@Test
public void testES(){
System.out.println(client);
}
//创建索引
@Test
public void testIndexData() throws IOException {
CreateIndexRequest request = new CreateIndexRequest("es_demo_index1");
CreateIndexResponse createIndexResponse = client.indices().create(request, RequestOptions.DEFAULT);
System.out.println(createIndexResponse.index());
System.out.println(createIndexResponse);
}
//判断索引是否存在
@Test
public void testExistIndex () throws IOException{
GetIndexRequest request = new GetIndexRequest("es_demo_index1");
boolean exists = client.indices().exists(request, RequestOptions.DEFAULT);
System.out.println(exists);
}
其中有一个是创建索引,一个是判断索引是否存在。
创建索引成功
判断索引是否存在
以上就是Spring Boot集成Elasticsearch的一个简单示例,更多关于ES的操作相关介绍,后续继续介绍,大家也可以查询接口文档去了解一下。
好了,感谢您的阅读,希望您喜欢,如对您有帮助,欢迎点赞收藏。如有不足之处,欢迎评论指正。下次见。
作者介绍:【小阿杰】一个爱鼓捣的程序猿,JAVA开发者和爱好者。公众号【Java全栈架构师】维护者,欢迎关注阅读交流。