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的操作相关介绍,后续继续介绍,大家也可以查询接口文档去了解一下。