springboot进行elasticsearch的开发

本文涉及的产品
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
简介: springboot进行elasticsearch的开发

目录

第一步:进行es的相关依赖的处理

第二步:定义全局的变量,用于在开发环境或者说uat环境动态变更处理

第三步:定义springboot的es的配置类


第一步:进行es的相关依赖的处理

es依赖包的版本设置

<elasticsearch.version>6.4.3</elasticsearch.version>

<spring.data.elasticsearch.version>3.2.1.RELEASE</spring.data.elasticsearch.version>

<!-- elasticsearch -->

  <dependency>

     <groupId>org.elasticsearch</groupId>

     <artifactId>elasticsearch</artifactId>

     <version>${elasticsearch.version}</version>

     <exclusions>

        <exclusion>

           <groupId>org.apache.logging.log4j</groupId>

           <artifactId>log4j-api</artifactId>

        </exclusion>

     </exclusions>

  </dependency>

  <dependency>

     <groupId>org.apache.logging.log4j</groupId>

     <artifactId>log4j-api</artifactId>

     <version>2.17.2</version>

  </dependency>

  <dependency>

     <groupId>org.elasticsearch.client</groupId>

     <artifactId>transport</artifactId>

     <version>${elasticsearch.version}</version>

  </dependency>

  <dependency>

     <groupId>org.elasticsearch.client</groupId>

     <artifactId>elasticsearch-rest-client</artifactId>

     <version>${elasticsearch.version}</version>

  </dependency>

  <dependency>

     <groupId>org.elasticsearch.client</groupId>

     <artifactId>elasticsearch-rest-high-level-client</artifactId>

     <version>${elasticsearch.version}</version>

  </dependency>

  <dependency>

     <groupId>org.elasticsearch.plugin</groupId>

     <artifactId>transport-netty4-client</artifactId>

     <version>${elasticsearch.version}</version>

  </dependency>

  <dependency>

     <groupId>org.springframework.boot</groupId>

     <artifactId>spring-boot-starter-data-elasticsearch</artifactId>

  </dependency>

第二步:定义全局的变量,用于在开发环境或者说uat环境动态变更处理

image.gif编辑

第三步:定义springboot的es的配置类

import java.util.ArrayList;

import java.util.List;

import org.apache.commons.lang.StringUtils;

import org.apache.http.HttpHost;

import org.apache.http.auth.AuthScope;

import org.apache.http.auth.UsernamePasswordCredentials;

import org.apache.http.client.CredentialsProvider;

import org.apache.http.impl.client.BasicCredentialsProvider;

import org.elasticsearch.client.RestClient;

import org.elasticsearch.client.RestClientBuilder;

import org.elasticsearch.client.RestHighLevelClient;

import org.slf4j.Logger;

import org.slf4j.LoggerFactory;

import org.springframework.beans.factory.annotation.Value;

import org.springframework.context.annotation.Bean;

import org.springframework.context.annotation.Configuration;


@Configuration

public class SpringBootElasticsearchConfig {

   private Logger LOGGER = LoggerFactory.getLogger(SpringBootElasticsearchConfig.class);

   @Value("${system.elasticsearch.schema:http}")

   private String schema;

   @Value("${system.elasticsearch.address:#{null}}")

   private String address;

   @Value("${system.elasticsearch.userName:#{null}}")

   private String userName;

   @Value("${system.elasticsearch.password:#{null}}")

   private String password;

   @Value("${system.elasticsearch.connectTimeout:10000}")

   private int connectTimeout;

   @Value("${system.elasticsearch.socketTimeout:60000}")

   private int socketTimeout;

   @Value("${system.elasticsearch.connectionRequestTimeout:10000}")

   private int connectionRequestTimeout;

   @Value("${system.elasticsearch.maxConnectTotal:1000}")

   private int maxConnectTotal;

   @Value("${system.elasticsearch.maxConnectPerRoute:500}")

   private int maxConnectPerRoute;

   @Value("${system.elasticsearch.keepAliveTime:3600000}")

   private long keepAliveTime;


   public SpringBootElasticsearchConfig() {

   }


   @Bean(

       name = {"restHighLevelClient"},

       destroyMethod = "close"

   )

   public RestHighLevelClient restHighLevelClient() {

       if (!StringUtils.isNotBlank(this.address)) {

           return null;

       } else {

           this.LOGGER.info("start init elasticsearch address:" + this.address);

           List<HttpHost> hostLists = new ArrayList();

           String[] hostList = this.address.split(",");

           String[] var3 = hostList;

           int var4 = hostList.length;


           for(int var5 = 0; var5 < var4; ++var5) {

               String addr = var3[var5];

               String host = addr.trim().split(":")[0];

               String port = addr.trim().split(":")[1];

               hostLists.add(new HttpHost(host, Integer.parseInt(port), this.schema));

           }


           HttpHost[] httpHost = (HttpHost[])hostLists.toArray(new HttpHost[0]);

           RestClientBuilder builder = RestClient.builder(httpHost);

           builder.setRequestConfigCallback((requestConfigBuilder) -> {

               requestConfigBuilder.setConnectTimeout(this.connectTimeout);

               requestConfigBuilder.setSocketTimeout(this.socketTimeout);

               requestConfigBuilder.setConnectionRequestTimeout(this.connectionRequestTimeout);

               return requestConfigBuilder;

           });

           builder.setHttpClientConfigCallback((httpClientBuilder) -> {

               httpClientBuilder.setMaxConnTotal(this.maxConnectTotal);

               httpClientBuilder.setMaxConnPerRoute(this.maxConnectPerRoute);

               httpClientBuilder.setKeepAliveStrategy((response, context) -> {

                   return this.keepAliveTime;

               });

               if (StringUtils.isNotBlank(this.userName)) {

                   this.LOGGER.info("start setting  username and password  of  elasticsearch");

                   CredentialsProvider credentialsProvider = new BasicCredentialsProvider();

                   credentialsProvider.setCredentials(AuthScope.ANY, new UsernamePasswordCredentials(this.userName, this.password));

                   httpClientBuilder.setDefaultCredentialsProvider(credentialsProvider);

               }


               return httpClientBuilder;

           });

           return new RestHighLevelClient(builder);

       }

   }

}

相关实践学习
使用阿里云Elasticsearch体验信息检索加速
通过创建登录阿里云Elasticsearch集群,使用DataWorks将MySQL数据同步至Elasticsearch,体验多条件检索效果,简单展示数据同步和信息检索加速的过程和操作。
ElasticSearch 入门精讲
ElasticSearch是一个开源的、基于Lucene的、分布式、高扩展、高实时的搜索与数据分析引擎。根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎,其次是Apache Solr(也是基于Lucene)。 ElasticSearch的实现原理主要分为以下几个步骤: 用户将数据提交到Elastic Search 数据库中 通过分词控制器去将对应的语句分词,将其权重和分词结果一并存入数据 当用户搜索数据时候,再根据权重将结果排名、打分 将返回结果呈现给用户 Elasticsearch可以用于搜索各种文档。它提供可扩展的搜索,具有接近实时的搜索,并支持多租户。
相关文章
|
4月前
|
JSON Java 网络架构
elasticsearch学习四:使用springboot整合 rest 进行搭建elasticsearch服务
这篇文章介绍了如何使用Spring Boot整合REST方式来搭建和操作Elasticsearch服务。
175 4
elasticsearch学习四:使用springboot整合 rest 进行搭建elasticsearch服务
|
3月前
|
JSON Java API
springboot集成ElasticSearch使用completion实现补全功能
springboot集成ElasticSearch使用completion实现补全功能
69 1
|
4月前
|
Web App开发 JavaScript Java
elasticsearch学习五:springboot整合 rest 操作elasticsearch的 实际案例操作,编写搜索的前后端,爬取京东数据到elasticsearch中。
这篇文章是关于如何使用Spring Boot整合Elasticsearch,并通过REST客户端操作Elasticsearch,实现一个简单的搜索前后端,以及如何爬取京东数据到Elasticsearch的案例教程。
311 0
elasticsearch学习五:springboot整合 rest 操作elasticsearch的 实际案例操作,编写搜索的前后端,爬取京东数据到elasticsearch中。
|
4月前
|
自然语言处理 Java Maven
elasticsearch学习二:使用springboot整合TransportClient 进行搭建elasticsearch服务
这篇博客介绍了如何使用Spring Boot整合TransportClient搭建Elasticsearch服务,包括项目创建、Maven依赖、业务代码和测试示例。
185 0
elasticsearch学习二:使用springboot整合TransportClient 进行搭建elasticsearch服务
|
4月前
|
开发框架 监控 搜索推荐
GoFly快速开发框架集成ZincSearch全文搜索引擎 - Elasticsearch轻量级替代为ZincSearch全文搜索引擎
本文介绍了在项目开发中使用ZincSearch作为全文搜索引擎的优势,包括其轻量级、易于安装和使用、资源占用低等特点,以及如何在GoFly快速开发框架中集成和使用ZincSearch,提供了详细的开发文档和实例代码,帮助开发者高效地实现搜索功能。
299 0
|
6月前
|
网络协议 Java API
SpringBoot整合Elasticsearch-Rest-Client、测试保存、复杂检索
这篇文章介绍了如何在SpringBoot中整合Elasticsearch-Rest-Client,并提供了保存数据和进行复杂检索的测试示例。
SpringBoot整合Elasticsearch-Rest-Client、测试保存、复杂检索
|
4月前
|
自然语言处理 搜索推荐 Java
SpringBoot 搜索引擎 海量数据 Elasticsearch-7 es上手指南 毫秒级查询 包括 版本选型、操作内容、结果截图(一)
SpringBoot 搜索引擎 海量数据 Elasticsearch-7 es上手指南 毫秒级查询 包括 版本选型、操作内容、结果截图
81 0
|
4月前
|
存储 自然语言处理 搜索推荐
SpringBoot 搜索引擎 海量数据 Elasticsearch-7 es上手指南 毫秒级查询 包括 版本选型、操作内容、结果截图(二)
SpringBoot 搜索引擎 海量数据 Elasticsearch-7 es上手指南 毫秒级查询 包括 版本选型、操作内容、结果截图(二)
68 0
|
3月前
|
存储 安全 数据管理
如何在 Rocky Linux 8 上安装和配置 Elasticsearch
本文详细介绍了在 Rocky Linux 8 上安装和配置 Elasticsearch 的步骤,包括添加仓库、安装 Elasticsearch、配置文件修改、设置内存和文件描述符、启动和验证 Elasticsearch,以及常见问题的解决方法。通过这些步骤,你可以快速搭建起这个强大的分布式搜索和分析引擎。
106 5
|
4月前
|
存储 JSON Java
elasticsearch学习一:了解 ES,版本之间的对应。安装elasticsearch,kibana,head插件、elasticsearch-ik分词器。
这篇文章是关于Elasticsearch的学习指南,包括了解Elasticsearch、版本对应、安装运行Elasticsearch和Kibana、安装head插件和elasticsearch-ik分词器的步骤。
412 0
elasticsearch学习一:了解 ES,版本之间的对应。安装elasticsearch,kibana,head插件、elasticsearch-ik分词器。

热门文章

最新文章