美文网首页Java&JAVA EEspringIT必备技能
SpringBoot集成Elasticsearch并进行增删改查

SpringBoot集成Elasticsearch并进行增删改查

作者: 奇点一氪 | 来源:发表于2019-11-15 18:00 被阅读0次

    首先呢 在整合之前我们需要安装ElasticSearch 可以参照之前博主的文章
    Windows环境下安装ES

    一、创建工程

    使用IntelliJ创建SpringBoot工程 SpringBoot版本为2.0.4 ElasticSearch为5.6.10







    删掉蓝框中的文件(如上) 最后我们的目录结构(如下)


    下面pom文件主要修改的是把spring boot从IntelliJ默认的版本换成2.0.4以及添加netty3的客户端 否则启动会报错

    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
    
        <groupId>net.conn</groupId>
        <artifactId>elasticsearch</artifactId>
        <version>0.0.1-SNAPSHOT</version>
        <packaging>war</packaging>
    
        <name>elasticsearch</name>
        <description>Demo project for Spring Boot</description>
    
        <parent>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-parent</artifactId>
            <version>2.0.4.RELEASE</version>
            <relativePath/> <!-- lookup parent from repository -->
        </parent>
    
        <properties>
            <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
            <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
            <java.version>1.8</java.version>
        </properties>
    
        <dependencies>
            <!--ElasticSearch-->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-data-elasticsearch</artifactId>
            </dependency>
            <!--需要引入transport-netty3-client,否则会启动报错-->
            <dependency>
                <groupId>org.elasticsearch.plugin</groupId>
                <artifactId>transport-netty3-client</artifactId>
                <version>5.6.10</version>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
            </dependency>
    
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-tomcat</artifactId>
                <scope>provided</scope>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-test</artifactId>
                <scope>test</scope>
            </dependency>
        </dependencies>
    
        <build>
            <plugins>
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                </plugin>
            </plugins>
        </build>
    
    
    </project>
    

    配置代码

    #Es地址
    es.hostName=localhost
    
    #Es端口号
    es.transport=9300
    
    #配置es的集群名称,默认是elasticsearch,es会自动发现在同一网段下的es,如果在同一网段下有多个集群,就可以用这个属性来区分不同的集群
    es.cluster.name=elasticsearch
    

    在Java工程下创建config文件夹 然后创建ElasticSearchConfig.java


    
    import org.elasticsearch.client.transport.TransportClient;
    import org.elasticsearch.common.settings.Settings;
    import org.elasticsearch.common.transport.InetSocketTransportAddress;
    import org.elasticsearch.common.transport.TransportAddress;
    import org.elasticsearch.transport.client.PreBuiltTransportClient;
    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;
    import org.springframework.context.annotation.PropertySource;
    
    import java.net.InetAddress;
    import java.net.UnknownHostException;
    
    /**
     * @Author Conn
     * @Date 2018/10/15
     */
    @Configuration
    @PropertySource(value = "classpath:config/elasticsearch.properties")
    public class ElasticSearchConfig {
        private static final Logger logger = LoggerFactory.getLogger(ElasticSearchConfig.class);
    
        @Value("${es.hostName}")
        private String hostName;
    
        @Value("${es.transport}")
        private Integer transport;
    
        @Value("${es.cluster.name}")
        private String clusterName;
    
        @Bean
        public TransportClient transportClient() {
            logger.info("ElasticSearch初始化开始");
    
            TransportClient transportClient = null;
    
            try {
                TransportAddress transportAddress = new InetSocketTransportAddress(InetAddress.getByName(hostName), Integer.valueOf(transport));
    
                //配置信息
                Settings es = Settings.builder().put("cluster.name", clusterName).build();
    
                //配置信息Settings自定义
                transportClient = new PreBuiltTransportClient(es);
    
                transportClient.addTransportAddress(transportAddress);
            } catch (UnknownHostException e) {
                logger.error("ES创建错误", e);
            }
            return transportClient;
        }
    }
    

    启动项目

    这时候我们通过springboot启动器启动项目会发现控制台报以下的错误



    解决方法是 pom文件里注释掉provided

    <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-tomcat</artifactId>
                <!--<scope>provided</scope>-->
            </dependency>
    

    后记

    OK 项目启动了 我们的整合也就成功了 接下来博主会带来部分elastic search的Java API的使用方法。

    相关文章

      网友评论

        本文标题:SpringBoot集成Elasticsearch并进行增删改查

        本文链接:https://www.haomeiwen.com/subject/ngysictx.html