一、创建工程使用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;

    @Beanpublic 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的使用方法。

作者:奇点一氪链接:https://www.jianshu.com/p/477b01c6c1c7来源:简书著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

12-07 08:27