利用eclipse在内网环境完成 springboot和elasticsearch的整合(包括环境的搭建)的完整流程

背景:科室要完成一个图文系统,其中用到elasticsearch搜索引擎,作者开始对elasticsearch进行学习,初步在eclipse上搭建了一个springboot与eclipse的整合,完成了对数据的简单增删改查,并在swagger上进行测试成功。

安装环境

  1. jdk安装:版本1.8.0_40

    jdk环境配置:

    classpath:  .;C:\Program Files\Java\jdk1.8.0_40\lib;C:\Program         Files\Java\jdk1.8.0_40\lib\tools.jar
    path:  ;C:\Program Files\Java\jdk1.8.0_40\bin;C:\Program Files\Java\jdk1.8.0_40\jre\bin
    

    配置完成,可以使用dos命令检查jdk是否安装成功:javac

  2. eclipse安装:版本eclipse-jee-mars-2-win32-x86_64
    1.初次需要配置eclipse中的jre版本,window->Preference->Java->Installed JREs->add 为jre1.8.0_40版本
    2.使用springboot框架需要用到maven,所以还需要安装和配置maven
    版本为apache-maven-3.6.0,需要进行环境配置

    path:;E:\apache-maven-3.6.0-bin\apache-maven-3.6.0\bin\;
    

    致此完成maven的安装,可以通过dos命令检查maven是否安装成功:mvn
    3.配置eclipse的Maven环境
    打开window->preferences->Maven->Installations,右侧点击add
    installstion type:选择external maven的安装目录
    设置maven的安装目录,然后finish
    配置settings.xml:
    因为本项目是在内网下运行的,还需要安装本地仓库:
    <settings> </settings>中添加本地仓库:

    <localRepository>E:\MvnRepository</localRepository>
    

    获取公司的镜像仓库:

     <mirrors>
    		    <mirror>
    		    <id>greeMavenMirror</id>
    		    <mirrorOf>*</mirrorOf>
    		    <name>gree maven mirror</name>
    		    <url>http://mirror.gree.com/maven</url>
        </mirrors> 
    

    打开window->preferences->maven->user settings
    加载修改好的settings文件,并更新

  3. 安装Mysql和前端可视化工具 navicat

  4. elasticsearch安装:版本5.2.0

    1. 下载安装包并解压

    2. 打开dos窗口,(在开始菜单栏输入cmd)

    3. 以我本机为例:
      下载解压到E:\elasticsearch\elasticsearch-5.2.0
      在dos窗口输入如下命令进入E盘:

       C:\User\180440>e:
      

      进入E盘bin目录:

       E:\>cd E:\elasticsearch\elasticsearch-5.2.0\bin
      

      运行elasticsearch.bat文件

       E:\>cd E:\elasticsearch\elasticsearch-5.2.0\bin>elasticsearch.bat
      
    4. elasticsearch启动

    5. 测试访问http://localhost:9200/
      如下结果表明elasticsearch安装成功

      {
        "name" : "9KresSP",
        "cluster_name" :elasticsearch",
        "cluster_uuid":"PN-82qmsTQ6_LK2hGVjJHw",
        "version" : {
          "number" : "5.2.0",
          "build_hash" : "24e05b9",
          "build_timestamp" : "2017-01-24T19:52:800Z",
          "build_snapshot" : false,
          "lucene_version" : "6.4.0"
        },
        "tagline" : "You Know, for Search"
      }
      
  5. 以后启动elasticsearch只要去bin目录下双击elasticsearch.bat即可启动elasticsearch

致此,环境准备完成

创建springboot的elasticsearch项目

  1. 创建一个maven项目,再根据springBoot的源码目录进行文件的增删操作

  2. 配置pom.xml文件
    注意:springframework.boot版本需要为2.0.2.RELEASE

     <?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>com.elasticsearch</groupId>
    	<artifactId>elasticsearch</artifactId>
    	<version>0.0.1-SNAPSHOT</version>
    	<packaging>jar</packaging>
     
    	<name>ElasticSearch</name>
    	<description>ElasticSearch project for Spring Boot</description>
     
    	<parent>
    		<groupId>org.springframework.boot</groupId>
    		<artifactId>spring-boot-starter-parent</artifactId>
    		<version>2.0.2.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>
    		<!-- https://mvnrepository.com/artifact/com.google.code.gson/gson -->
    		<dependency>
    			<groupId>com.google.code.gson</groupId>
    			<artifactId>gson</artifactId>
    			<version>2.8.0</version>
    		</dependency>
     
    		<!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-data-elasticsearch -->
    		<dependency>
    			<groupId>org.springframework.boot</groupId>
    			<artifactId>spring-boot-starter-data-elasticsearch</artifactId>
    			<version>2.0.2.RELEASE</version>
    		</dependency>
    		<dependency>
    			<groupId>org.springframework.boot</groupId>
    			<artifactId>spring-boot-starter-web</artifactId>
    		</dependency>
    	   <!--为了进行swagger测试,加入依赖-->
    		<dependency>
    			<groupId>io.springfox</groupId>
    			<artifactId>springfox-swagger2</artifactId>
    			<version>2.6.1</version>
    		</dependency>
    		<dependency>
    			<groupId>io.springfox</groupId>
    			<artifactId>springfox-swaggerr-ui</artifactId>
    			<version>2.6.1</version>
    		</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>
    

3.配置application.properties文件

# elasticsearch集群名称,默认的是elasticsearch 
spring.data.elasticsearch.cluster-name=my-application
 
#节点的地址 注意api模式下端口号是9300,千万不要写成9200 192.168.174.1为本机ip地址
spring.data.elasticsearch.cluster-nodes=192.168.174.1:9300
 
#是否开启本地存储
spring.data.elasticsearch.repositories.enable=true

**注意:**此处将elasticsearch集群名称名称设置为my-application,则要保证elasticsearch安装目录下conf文件中的elasticsearch.yml文件配置为下:
注意安装完成之后的yml文件下列属性是默认注释掉的,要记得打开。

   cluster.name:my-application
    network.host:0.0.0.0

network.host属性设置为0.0.0.0是为了让外网也可以访问。
4.配置实体类,这里与mysql创建实体类不一样,需要和elasticsearch中的索引进行对应

package com.elasticsearch.entity;
import org.springframework.data.annotation.Id;
import org.springframework.data.elasticsearch.annotations.Document;
import org.springframework.data.elasticsearch.annotations.Field;

@Document(indexName = "company",type = "employee", shards = 1,replicas = 0, refreshInterval = "-1")
public class Employee {
    @Id
    private String id;
    @Field
    private String firstName;
    @Field
    private String lastName;
    @Field
    private Integer age = 0;
    @Field
    private String about;
 
    public String getId() {
        return id;
    }
 
    public void setId(String id) {
        this.id = id;
    }
 
    public String getFirstName() {
        return firstName;
    }
 
    public void setFirstName(String firstName) {
        this.firstName = firstName;
    }
 
    public String getLastName() {
        return lastName;
    }
 
    public void setLastName(String lastName) {
        this.lastName = lastName;
    }
 
    public Integer getAge() {
        return age;
    }
 
    public void setAge(Integer age) {
        this.age = age;
    }
 
    public String getAbout() {
        return about;
    }
 
    public void setAbout(String about) {
        this.about = about;
    }
}

5.实体类对应的dao接口:

注意继承的ElasticsearchRepository接口中的方法

package com.elasticsearch.dao;
 
import com.elasticsearch.entity.Employee;
import org.springframework.data.elasticsearch.repository.ElasticsearchRepository;
import org.springframework.stereotype.Component;

@Component
public interface EmployeeRepository extends ElasticsearchRepository<Employee,String>{
 
    /**
     * 查询雇员信息
     * @param id
     * @return
     */
    Employee queryEmployeeById(String id);
}

6.实体对应的控制类:

package com.elasticsearch.controller;
import com.elasticsearch.dao.EmployeeRepository;
import com.elasticsearch.entity.Employee;
import com.google.gson.Gson;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("es")
@Api(tags="elasticsearch",value="elasticsearch测试")
public class EmployeeController {
 
    @Autowired
    private EmployeeRepository employeeRepository;
 
    /**
     * 添加
     * @return
     */
    @RequestMapping("add")
    public String add() {
        Employee employee = new Employee();
        employee.setId("1");
        employee.setFirstName("xuxu");
        employee.setLastName("zh");
        employee.setAge(26);
        employee.setAbout("i am in peking");
        employeeRepository.save(employee);
        System.err.println("add a obj");
        return "success";
    }
 
    /**
     * 删除
     * @return
     */
    @RequestMapping("delete")
    public String delete() {
        Employee employee = employeeRepository.queryEmployeeById("1");
        employeeRepository.delete(employee);
        return "success";
    }
 
    /**
     * 局部更新
     * @return
     */
    @RequestMapping("update")
    public String update() {
        Employee employee = employeeRepository.queryEmployeeById("1");
        employee.setFirstName("哈哈");
        employeeRepository.save(employee);
        System.err.println("update a obj");
        return "success";
    }
    /**
     * 查询
     * @return
     */
    @RequestMapping("query")
    public Employee query() {
        Employee accountInfo = employeeRepository.queryEmployeeById("1");
        System.err.println(new Gson().toJson(accountInfo));
        return accountInfo;
    }
}  

7.Application.java启动类

8.运动Application.java文件,访问http://localhost:8090/swagger-ui.html#!/elasticsearch 进行测试

9.最后注意:

1.ES中API的端口号是9300而不是9200。

2.ES系统中Elasticsearch.yml配置文件中要加入network.host: 0.0.0.0,否则外网地址访问不了。

3.最新的资料一定要去官网上面查看,博客上面好多都是过时的。官网地址:https://www.elastic.co

4.注意JDK、ES、Springboot三者之间的版本,很多时候错误都是版本冲突引起的。
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值