文档章节

SpringBoot集成Elasticsearch并进行增删改查操作

 一字见心
发布于 2019/12/07 00:24
字数 678
阅读 24
收藏 0

一、创建工程 使用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的使用方法。

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

本文转载自:https://www.jianshu.com/p/477b01c6c1c7

粉丝 0
博文 26
码字总数 8368
作品 0
成都
私信 提问
docker+es+kibana和springboot中使用es

本次和大家分享的主要是docker搭建es和springboot操作es的内容,也便于工作中或将来使用方便,因此从搭建es环境开始到代码插入信息到es中;主要节点如下: elasticsearch启动 mobz/elasticse...

神牛003
2018/10/10
0
0
elasticsearch入门 springboot2集成elasticsearch 实现全文搜索,图文讲解带源码

springboot整合elasticsearch常用的方式有以下三种 1,Java API 这种方式基于TCP和ES通信,官方已经明确表示在ES 7.0版本中将弃用TransportClient客户端,且在8.0版本中完全移除它,所以不提倡...

码农小石头
2019/03/24
0
0
spring-data-elasticsearch 基本案例详解(三)

『 风云说:能分享自己职位的知识的领导是个好领导。 』 运行环境:JDK 7 或 8,Maven 3.0+ 技术栈:SpringBoot 1.5+, Spring Data Elasticsearch 1.5+ ,ElasticSearch 2.3.2 本文提纲 一、...

夜黑人模糊灬
2018/05/13
1.3K
1
Docker下ELK三部曲之二:细说开发

本章是《Docker下ELK三部曲》的第二篇,之前的《Docker下ELK三部曲之一:极速体验》部署了ELK,还有一个web应用可以将日志上报到ELK,然后在Kibana提供的页面查询到了日志,今天我们一起深入...

boling_cavalry
2018/04/21
0
0
【ElasticSearch】---SpringBoot整合ElasticSearch

SpringBoot整合ElasticSearch 一、基于spring-boot-starter-data-elasticsearch整合 开发环境:springboot版本:2.0.1,elasticSearch-5.6.8.jar版本:5.6.8,服务器部署ElasticSearch版本:......

雨点的名字
2018/08/23
0
0

没有更多内容

加载失败,请刷新页面

加载更多

如何在PHP中获取字符串的最后一个字符?

我需要获取字符串的最后一个字符。 假设我有“测试人员”作为输入字符串,并且我希望结果为“ s”。 如何在PHP中做到这一点? #1楼 请记住,如果有一个字符串使用fgets()函数从文本文件中读取...

javail
32分钟前
56
0
DaY07方法重写的面试题

方法重写的面试题 * Override和Overload的区别?Overload能改变返回值类型吗? * overload可以改变返回值类型,只看参数列表 * 方法重写:子类中出现了和父类中方法声明一模一样的方法。与返回值...

Lao鹰
34分钟前
43
0
用Markdown编程之类型

类型就是约定。而现有的类型是单纬度的。用标注法编程好处就是可以多维度。 类型基础分为: 虚 实 在此之上分为: 根 寄存器级 联 内存级 外 网络级 虚:说白了就是指针或索引之类的概念。之...

dwcz
52分钟前
66
0
每天AC系列(四):四数之和

1 题目 Leetcode第18题,给定一个数组与一个target,找出数组中的四个数之和为target的不重复的所有四个数. 2 暴力 List<List<Integer>> result = new ArrayList<>();if (nums.length == 4 &......

Blueeeeeee
今天
70
0
git clone --mirror和git clone --bare有什么区别

git clone帮助页面上有关于--mirror : 设置远程存储库的镜像。 这意味着--bare 。 但没有详细介绍--mirror克隆与--bare克隆--mirror不同。 #1楼 克隆将从远程服务器复制参考,并将其填充到名...

技术盛宴
今天
86
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部