zoukankan      html  css  js  c++  java
  • Springboot整合elasticsearch以及接口开发

    Springboot整合elasticsearch以及接口开发

    搭建elasticsearch集群

    搭建过程略(我这里用的是elasticsearch5.5.2版本)

    写入测试数据

    新建索引book(非结构化索引)

    PUT http://192.168.100.102:9200/book

    修改mapping(结构化索引)

    POST http://192.168.100.102:9200/book/novle/_mappings
    
    {
    
      "novel": {
    
        "properties": {
    
          "word_count": {"type": "integer"},
    
          "author": {"type": "keyword"},
    
          "title": {"type": "text"},
    
          "publish_date": {"type": "date","format": "yyyy-MM-dd HH:mm:ss||yyyy-MM-dd||epoch_millis"}
    
        }
    
      }
    
    }
    

      

    查看新建索引结果(我这里使用的是elasticsearch-head插件)

    测试数据写入

    PUT http://192.168.100.102:9200/book/novel/1
    
    {
    
    "word_count": 1000000,
    
    "author": "金庸",
    
    "title": "神雕侠侣",
    
    "publish_date": "1997-10-1"
    
    }

    查看数据写入结果:

    Springboot整合elasticsearch

    新建springboot项目

    目录结构

    Pom文件

    <?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>
        <parent>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-parent</artifactId>
            <!--<version>2.1.1.RELEASE</version>-->
            <version>1.5.6.RELEASE</version>
            <relativePath/> <!-- lookup parent from repository -->
        </parent>
        <groupId>com.ylht</groupId>
        <artifactId>es-demo</artifactId>
        <version>0.0.1-SNAPSHOT</version>
        <name>es-demo</name>
        <description>Demo project for Spring Boot</description>
    
        <properties>
            <java.version>1.8</java.version>
            <es.version>5.5.2</es.version>
        </properties>
    
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
            </dependency>
            <!-- https://mvnrepository.com/artifact/org.elasticsearch.client/transport -->
            <dependency>
                <groupId>org.elasticsearch.client</groupId>
                <artifactId>transport</artifactId>
                <version>${es.version}</version>
            </dependency>
    
            <dependency>
                <groupId>org.elasticsearch</groupId>
                <artifactId>elasticsearch</artifactId>
                <version>${es.version}</version>
            </dependency>
    
            <dependency>
                <groupId>org.apache.logging.log4j</groupId>
                <artifactId>log4j-api</artifactId>
                <version>2.7</version>
            </dependency>
    
            <!-- https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-core -->
            <dependency>
                <groupId>org.apache.logging.log4j</groupId>
                <artifactId>log4j-core</artifactId>
                <version>2.7</version>
            </dependency>
    
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-devtools</artifactId>
                <scope>runtime</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>

     

    log4j2.properties

    appender.console.type=Console
    appender.console.name=console
    appender.console.layout.type=PatternLayout
    appender.console.layout.pattern=[%t] %-5p %c %m%n
    
    rootLogger.level=info
    rootLogger.appenderRef.console.ref=console

    MyConfig

    package com.ylht.esdemo;
    
    import org.elasticsearch.client.transport.TransportClient;
    import org.elasticsearch.common.settings.Settings;
    import org.elasticsearch.common.transport.InetSocketTransportAddress;
    import org.elasticsearch.transport.client.PreBuiltTransportClient;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    
    import java.net.InetAddress;
    import java.net.UnknownHostException;
    
    @Configuration
    public class MyConfig {
    
        @Bean
        public TransportClient client() throws UnknownHostException {
            InetSocketTransportAddress es1 = new InetSocketTransportAddress(
                    InetAddress.getByName("192.168.100.101"), 9300
            );
            InetSocketTransportAddress es2 = new InetSocketTransportAddress(
                    InetAddress.getByName("192.168.100.102"), 9300
            );
            InetSocketTransportAddress es3 = new InetSocketTransportAddress(
                    InetAddress.getByName("192.168.100.103"), 9300
            );
    
            Settings settings = Settings.builder()
                    .put("cluster.name", "aubin-cluster")
                    .build();
    
            TransportClient client = new PreBuiltTransportClient(settings);
            client.addTransportAddresses(es1, es2, es3);
            return client;
        }
    }

    EsDemoApplication类文件

    package com.ylht.esdemo;
    
    import org.elasticsearch.action.get.GetResponse;
    import org.elasticsearch.client.transport.TransportClient;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
    import org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaAutoConfiguration;
    import org.springframework.http.HttpStatus;
    import org.springframework.http.ResponseEntity;
    import org.springframework.web.bind.annotation.GetMapping;
    import org.springframework.web.bind.annotation.RequestParam;
    import org.springframework.web.bind.annotation.RestController;
    
    import javax.xml.ws.Response;
    
    @SpringBootApplication(exclude = {DataSourceAutoConfiguration.class, HibernateJpaAutoConfiguration.class})
    @RestController
    public class EsDemoApplication {
    
        @Autowired
        private TransportClient client;
    
        @GetMapping("/")
        public String index() {
            return "index";
        }
    
        @GetMapping(value = "/get/book/novel")
        public ResponseEntity get(@RequestParam(name = "id", defaultValue = "") String id) {
            try {
    
                if (id.isEmpty()) {
                    return new ResponseEntity(HttpStatus.NOT_FOUND);
                }
                GetResponse response = this.client.prepareGet("book", "novel", id)
                        .get();
                if (!response.isExists()) {
                    return new ResponseEntity(HttpStatus.NOT_FOUND);
                }
                return new ResponseEntity(response.getSource(), HttpStatus.OK);
            } catch (Exception e) {
                e.printStackTrace();
                return new ResponseEntity(HttpStatus.INTERNAL_SERVER_ERROR);
            }
        }
    
        public static void main(String[] args) {
            SpringApplication.run(EsDemoApplication.class, args);
        }
    }

    启动项目

    (启动项目之前最好先 mvn clean,mvn package,mvn install

    启动方式有多种

    1. 直接点击绿色三角按钮运行(它右边一个是debug运行)
    2. 直接运行main方法
    3. 点击Teminal,输入mvn spring-boo:run

    运行出错可以看看我的博客https://i.cnblogs.com/posts?categoryid=1373086

    项目正常启动后

     

    接口测试

    我这里使用的ponstman

    GET 192.168.100.53:8080/get/book/novel?id=1

    结果图

  • 相关阅读:
    spring+redis+nginx 实现分布式session共享
    nginx 中location和root,你确定真的明白他们关系?
    idea设置自定义快捷键
    jsp 页面导出excel时字符串数字变成科学计数法的解决方法
    Linux 查看tomcat占用的端口号
    mybatis 单一参数时的动态语句
    cxf + spring + maven 开发webservice
    Vim 快捷键
    vim与windows/linux之间的复制粘贴小结
    在Linux中执行.sh脚本,异常
  • 原文地址:https://www.cnblogs.com/ylht/p/10196380.html
Copyright © 2011-2022 走看看