【Spring Boot 快速入门】十三、Spring Boot集成Elasticsearch

本文涉及的产品
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
简介: 【Spring Boot 快速入门】十三、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);
    }


其中有一个是创建索引,一个是判断索引是否存在。 创建索引成功

image.png


判断索引是否存在

image.png

  以上就是Spring Boot集成Elasticsearch的一个简单示例,更多关于ES的操作相关介绍,后续继续介绍,大家也可以查询接口文档去了解一下。



相关实践学习
利用Elasticsearch实现地理位置查询
本实验将分别介绍如何使用Elasticsearch7.10版本进行全文检索、多语言检索和地理位置查询三个Elasticsearch基础检索子场景的实现。
ElasticSearch 入门精讲
ElasticSearch是一个开源的、基于Lucene的、分布式、高扩展、高实时的搜索与数据分析引擎。根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎,其次是Apache Solr(也是基于Lucene)。 ElasticSearch的实现原理主要分为以下几个步骤: 用户将数据提交到Elastic Search 数据库中 通过分词控制器去将对应的语句分词,将其权重和分词结果一并存入数据 当用户搜索数据时候,再根据权重将结果排名、打分 将返回结果呈现给用户 Elasticsearch可以用于搜索各种文档。它提供可扩展的搜索,具有接近实时的搜索,并支持多租户。
目录
相关文章
|
7天前
|
数据可视化 Java API
Spring Boot与Swagger的集成
Spring Boot与Swagger的集成
|
7天前
|
Java API 开发者
在Spring Boot中集成Swagger API文档
在Spring Boot中集成Swagger API文档
|
11天前
|
前端开发 Java API
Spring Boot与GraphQL的集成
Spring Boot与GraphQL的集成
|
6天前
|
Java API 开发工具
Spring Boot与Spring Cloud Config的集成
Spring Boot与Spring Cloud Config的集成
|
8天前
|
Java 微服务 Spring
|
8天前
|
Java API 开发者
Spring Boot与API Blueprint的集成
Spring Boot与API Blueprint的集成
|
8天前
|
NoSQL Java Redis
Spring Boot与Redisson的集成
Spring Boot与Redisson的集成
|
8天前
|
Java API 开发者
|
11天前
|
开发框架 Java 数据库
Spring Boot集成多数据源的最佳实践
Spring Boot集成多数据源的最佳实践
|
11天前
|
NoSQL Java MongoDB
Spring Boot与MongoDB的集成应用
Spring Boot与MongoDB的集成应用