`
qindongliang1922
  • 浏览: 2187967 次
  • 性别: Icon_minigender_1
  • 来自: 北京
博客专栏
7265517b-f87e-3137-b62c-5c6e30e26109
证道Lucene4
浏览量:117632
097be4a0-491e-39c0-89ff-3456fadf8262
证道Hadoop
浏览量:126036
41c37529-f6d8-32e4-8563-3b42b2712a50
证道shell编程
浏览量:59985
43832365-bc15-3f5d-b3cd-c9161722a70c
ELK修真
浏览量:71374
社区版块
存档分类
最新评论

如何在Spring中注入ElasticSearch实例

阅读更多

在企业级项目开发中,大多数公司都会集成Spring来简化开发成本,要使用Spring自然少不了一大堆需要依赖注入的Bean,通常情况下,我们会选择在spring的xml中,配置一些类的实例,比如连接池,或者配置文件初始化类,或者集成duboo时配置一些Service的引用等等。

有些类的实例生成比较复杂,直接在xml中,是没法进行配置的,比如我想在Spring注入ElasticSearch的Client实例,注意(这里并不是使用的spring-data-elasticsearch项目),而是使用原始的ElasticSearch的API。

我们先看下,在非Spring的项目中,如何初始化ElasticSearch的Client实例:


  //es的客户端实例  
   static Client client=null;  
   static {  
    	//设置集群名字
    	Settings settings = ImmutableSettings.settingsBuilder()
    	        .put("cluster.name", "search")
    	        .put("client.transport.sniff", true)
    	       . build();
        //连接单台机器,注意ip和端口号,不能写错  
        client=new TransportClient(settings)
        .addTransportAddress(new InetSocketTransportAddress("192.168.1.187", 9300))
        .addTransportAddress(new InetSocketTransportAddress("192.168.1.121", 9300))
        .addTransportAddress(new InetSocketTransportAddress("192.168.1.122", 9300));
      }



由于ElasticSearch的Client实例是通过各种组装加工而成,并没法直接在Spring的xml中使用Bean标签进行初始化,这时候我们可以使用@Configuration注解,来在Java类中,生成bean实例,这个注解和使用spring的xml进行注入功能大致相同,只不过能直接在Java类生成一个类实例,比较灵活而已。最终的代码如下:

package cn.bizbook.product.elk.config;

import org.elasticsearch.client.Client;
import org.elasticsearch.client.transport.TransportClient;
import org.elasticsearch.common.settings.ImmutableSettings;
import org.elasticsearch.common.settings.Settings;
import org.elasticsearch.common.transport.InetSocketTransportAddress;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * Created by qindongliang on 2016/4/6.
 */
@Configuration
public class FactoryBean {

    //配置文件工具类
    @Autowired
    private ESConf esConf;


    //注入的ElasticSearch实例
    @Bean(name = "client")
    public Client getESClient(){
        //设置集群名字
        Settings settings = ImmutableSettings.settingsBuilder()
                .put("cluster.name", esConf.getClusterName())
                .build();
       Client  client=new TransportClient(settings);
        //读取的ip列表是以逗号分隔的
        for(String ip:esConf.getIps().split(",")){
            ((TransportClient)client).addTransportAddress(new InetSocketTransportAddress(ip,esConf.getPort()));
        }
        return client;
    }

}





最后来看下,如何在DAO层,引用client实例,非常easy:

    @Resource(name = "client")
     private  Client client;



有什么问题 可以扫码关注微信公众号:我是攻城师(woshigcs),在后台留言咨询。
本公众号的内容是有关搜索和大数据技术和互联网等方面内容的分享,也是一个温馨的技术互动交流的小家园

3
5
分享到:
评论

相关推荐

    elasticsearch集成spring开发实例

    **Elasticsearch 集成 Spring 开发实例详解** 在现代大数据分析和实时搜索领域,Elasticsearch(简称 ES)已经成为了广泛使用的工具。它是一个分布式、RESTful 风格的搜索和数据分析引擎,能够处理大量数据并提供...

    Elasticsearch+spring

    `spring-elasticsearch-master` 压缩包文件可能包含一个示例项目,演示了如何在 Spring Boot 应用中集成 Elasticsearch。这个项目可能有以下结构: - `pom.xml`:Maven 项目配置,包含 Elasticsearch 和 Spring ...

    spring data elasticsearch

    总结来说,Spring Data Elasticsearch 是一个强大的工具,它使得在 Spring 应用程序中使用 Elasticsearch 变得简单而直观。通过定义实体类、创建 Repository 接口以及利用注解,你可以轻松地完成数据的存储、检索、...

    elasticsearch结合spring springmvc jest 使用做成WEB架构

    在Spring应用中配置Jest客户端,需要在配置类中添加JestClientFactoryBean,指定Elasticsearch集群的URL。这样,Spring在启动时会自动创建Jest客户端实例。 6. **创建Repository** 使用Spring Data Elasticsearch...

    Spring Boot 集成 ElasticSearch.docx

    接着,我们需要在项目中创建一个配置类,如`ESConfig`,用来构建Elasticsearch的客户端实例。示例代码如下: ```java @Configuration public class ESConfig { @Bean public TransportClient client() throws ...

    springMVC整合elasticsearch,基于maven

    在应用中,你可以通过依赖注入的方式使用这个Repository接口来执行对Elasticsearch的操作。例如,在一个Service类中: ```java @Service public class YourService { @Autowired private YourEntityRepository ...

    Spring+springMvc+redis+elasticsearch之附件

    在本项目中,我们主要探讨的是如何整合Spring、SpringMVC、Redis以及Elasticsearch来构建一个高效的数据处理和检索系统。以下将详细介绍这四个关键组件及其相互间的整合。 首先,Spring是一个开源的Java框架,它...

    Mybatis的Mapper方式整合elasticsearch的DSL调用,基于接口和代理生成bean注入的方式进行调用

    3. **配置Bean注入**:在Spring配置中,将生成的代理类作为一个Bean注入到需要使用Elasticsearch查询的地方。这样,每次调用`EsSearchMapper`的方法时,实际上是在调用代理类的方法。 4. **实现DSL构建**:在代理类...

    springBoot Elasticsearch 配置 demo

    在本文中,我们将深入探讨如何在Spring Boot应用中配置并使用Elasticsearch。Elasticsearch是一种流行的、基于Lucene的分布式搜索引擎,适用于实时数据分析和大规模数据检索。与Spring Boot结合,可以轻松地在Java...

    第15单元 ElasticSearch与Spring的集成1

    将Elasticsearch与Spring集成,可以方便地在Spring环境中进行Elasticsearch的操作,实现数据的快速存储和检索。 **1. Elasticsearch基础概念** - **索引(Index)**:类似于关系型数据库中的数据库,是一个包含...

    Elasticsearch java工具类

    在SpringBoot中整合Elasticsearch,通常会通过声明一个`@Bean`来配置`RestHighLevelClient`,然后在服务层创建对应的`ElasticsearchTemplate`实例,用于执行各种操作。开发者可以利用SpringBoot的自动配置和依赖注入...

    基于Java8的SSM+Elasticsearch全文检索的个人博客系统.zip

    在构建一个基于Java8的SSM(Spring、SpringMVC、MyBatis)+Elasticsearch的个人博客系统中,我们需要掌握多个核心技术点。这里,我们将深入探讨如何整合这些技术来实现一个高效的全文检索功能。 首先,让我们了解...

    springboot整合Elasticsearch

    在需要操作Elasticsearch的地方,通过@Autowired注入Repository实例,然后调用其方法。例如: ```java @Autowired private BookRepository bookRepository; public void saveBook(Book book) { ...

    spring-data源码

    在本篇文章中,我们将聚焦于Spring Data的一个重要模块——Spring Data Elasticsearch,这是针对流行搜索引擎Elasticsearch的Java开发插件。通过对Spring Data Elasticsearch 2.1.10.RELEASE的源码分析,我们可以...

    SpringBoot +esapi 实现防止xss攻击 实战代码

    本文将深入探讨如何在SpringBoot应用中结合springSecurity过滤器链,利用ESAPI库实现XSS防护。 首先,让我们了解ESAPI。ESAPI是一个开源的安全库,提供了一系列的安全功能,包括输入验证、输出编码、安全随机数生成...

    springboot - 2.7.3版本 - (六)学习如何使用Elasticsearch-8.4.2

    在本教程中,我们将深入探讨如何在SpringBoot 2.7.3版本中集成并使用Elasticsearch 8.4.2,这是一个强大的开源搜索引擎和数据分析工具。Elasticsearch以其分布式、实时、可扩展的特性而闻名,广泛应用于日志分析、...

    Spring Boot整合Elasticsearch实现全文搜索引擎案例解析

    在本案例中,我们将探讨如何使用Spring Boot与Elasticsearch进行整合,构建一个全文搜索引擎。首先,理解Elasticsearch的基本概念至关重要。Elasticsearch是一个基于Lucene的开源、分布式、实时的搜索和分析引擎,...

    基于Compass2.2与Spring 结合建立索引的实例

    该框架支持多种搜索引擎(如Elasticsearch, Solr等),使得开发人员能够在不深入学习特定搜索引擎的情况下,轻松地在其应用中集成高级的全文搜索功能。 #### 二、项目模型定义 在本文档的第一部分,展示了`...

    SpringBoot+SpringDataElasticsearch源码

    1. **添加依赖**:在SpringBoot的`pom.xml`文件中,添加SpringDataElasticsearch和Elasticsearch的依赖项。 ```xml <groupId>org.springframework.boot <artifactId>spring-boot-starter-data-elasticsearch ...

    weasel-spring-elasticsearch:一个封装了对es操作的包,基于spring

    5. **使用示例**:开发者可以在Spring的配置文件中引入weasel-spring-elasticsearch的相关配置,然后在需要的地方注入Elasticsearch的客户端实例,通过调用提供的方法执行相应的操作,如`@Autowired private ...

Global site tag (gtag.js) - Google Analytics