Spring Boot 2.0 M7 整合 ES 5 、Kibana 和 X-pack

这篇具有很好参考价值的文章主要介绍了Spring Boot 2.0 M7 整合 ES 5 、Kibana 和 X-pack。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

本章内容

      1. ES 及 x-pack 下载安装
      1. Kibana 及 x-pack 下载安装
      1. Spring Boot 整合 ES
      1. Spring Boot 操作 ES

阅读时间:5 分钟

摘录:打算起手不凡写出鸿篇巨作的,往往坚持不了完成第一章节

原文出处:spring4all.com

1. ES 及 x-pack 下载安装

spring-data-elasticsearch 之 ElasticSearch 架构初探,详细看下我另外一篇文章《深入浅出 spring-data-elasticsearch 之 ElasticSearch 架构初探(一)》 http://www.spring4all.com/article/330

ES 三大要素:

  • 文档(Document) 文档,在面向对象观念就是一个对象。在 ES 里面,是一个大 JSON 对象,是指定了唯一 ID 的最底层或者根对象。文档的位置由 _index、_type 和 _id 唯一标识。

  • 索引(Index) 索引,用于区分文档成组,即分到一组的文档集合。索引,用于存储文档和使文档可被搜索。比如项目存索引 project 里面,交易存索引 sales 等。

  • 类型(Type) 类型,用于区分索引中的文档,即在索引中对数据逻辑分区。比如索引 project 的项目数据,根据项目类型 ui 项目、插画项目等进行区分。

和关系型数据库 MySQL 做个类比:

  • Document 类似于 Record
  • Type 类似于 Table
  • Index 类似于 Database

安装步骤如下:

1. 下载 ES 5.5.3

下载地址: https://www.elastic.co/downloads/past-releases/elasticsearch-5-5-3

2. 安装 ES 插件 x-pack

解压 – 然后安装 插件 x-pack

tar -xzf elasticsearch-5.3.0.tar.gz
cd elasticsearch-5.3.0/

// 安装 X-Pack
bin/elasticsearch-plugin install x-pack


3. 配置 ES 并启动

设置 Xpack 安全验证为 false:

vim config/elasticsearch.yml

并添加下面配置:

xpack.security.enabled: false

并启动 ES:

./bin/elasticsearch

或者后台启动
./bin/elasticsearch -d

2. Kibana 及 x-pack 下载安装

1. 下载 Kibana 5.5.3

下载地址: https://www.elastic.co/downloads/past-releases/kibana-5-5-3

2. 安装 Kibana 插件 x-pack

解压 – 然后安装 插件 x-pack

tar -zxvf kibana-5.5.3-darwin-x86_64.tar.gz
cd kibana-5.5.3-darwin-x86_64/

// 安装 X-Pack
bin/kibana-plugin install x-pack


3. 配置 Kibana 并启动

设置 Xpack 安全验证为 false:

vim config/kibana.yml

并添加下面配置:

xpack.security.enabled: false

并启动 Kibana:

./bin/kibanah

或者后台启动
nohup ./bin/kibana &

必须注意:先启动 ES,再启动 Kibana。

如果后台启动注意,关闭命令如下:

ps aux | grep 'elastic'
kill -9 pid

启动成功后,打开网页访问 127.0.0.1:5601 , 默认账号为:elasti,密码为 changeme。

3. Spring Boot 整合 ES

1. pom.xml 依赖

代码如下:

<?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.spring4all</groupId>
    <artifactId>bysocket</artifactId>
    <version>1.0.0</version>

    <description>bysocket :: AI For All</description>

    <properties>
        <lombok.version>1.16.18</lombok.version>
    </properties>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.0.0.M7</version>
    </parent>

    <dependencies>

        <!-- web 依赖 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <exclusions>
                <exclusion>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-starter-logging</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-starter-tomcat</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

        <!-- 日志 log4j2 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-log4j2</artifactId>
        </dependency>

        <!-- 容器 undertow -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-undertow</artifactId>
        </dependency>

        <!-- 简化 lombok -->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>${lombok.version}</version>
        </dependency>

        <!-- ES -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-elasticsearch</artifactId>
        </dependency>
    </dependencies>

    <repositories>
        <repository>
            <id>spring-milestones</id>
            <name>Spring Milestones</name>
            <url>https://repo.spring.io/libs-milestone</url>
            <snapshots>
                <enabled>true</enabled>
            </snapshots>
        </repository>
    </repositories>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <version>1.5.7.RELEASE</version>
                <configuration>
                    <fork>true</fork>
                    <addResources>true</addResources>
                </configuration>
                <executions>
                    <execution>
                        <goals>
                            <goal>repackage</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

</project>


Spring Data

要了解 spring-data-elasticsearch 是什么,首先了解什么是 Spring Data。 Spring Data 基于 Spring 为数据访问提供一种相似且一致性的编程模型,并保存底层数据存储的。

Spring Data Elasticsearch

spring-data-elasticsearch 是 Spring Data 的 Community modules 之一,是 Spring Data 对 Elasticsearch 引擎的实现。 Elasticsearch 默认提供轻量级的 HTTP Restful 接口形式的访问。相对来说,使用 HTTP Client 调用也很简单。但 spring-data-elasticsearch 可以更快的支持构建在 Spring 应用上,比如在 application.properties 配置 ES 节点信息和 spring-boot-starter-data-elasticsearch 依赖,直接在 Spring Boot 应用上使用。

这里依赖的 spring-boot-starter-data-elasticsearch 版本是 2.0,对应的 spring-data-elasticsearch 版本是 5.5.3.RELEASE。 对应 ES 尽量安装成版本一致 5.5.3。

2. application.properties 配置 ES 地址

application.properties 配置如下:

# ES
spring:
  data:
    elasticsearch:
      repositories:
        enabled: true
      cluster-name: elasticsearch
      cluster-nodes: 120.132.29.37:9300


默认 9300 是 Java 客户端的端口。9200 是支持 Restful HTTP 的接口。 更多配置:

  • spring.data.elasticsearch.cluster-name Elasticsearch 集群名。(默认值: elasticsearch)
  • spring.data.elasticsearch.cluster-nodes 集群节点地址列表,用逗号分隔。如果没有指定,就启动一个客户端节点。
  • spring.data.elasticsearch.propertie 用来配置客户端的额外属性。
  • spring.data.elasticsearch.repositories.enabled 开启 Elasticsearch 仓库。(默认值:true。)

3. ES 数据操作层

文章实体类代码如下:

/**
 * 文章
 */
@Document(indexName = "elasticsearch", type = "article")
@Data
public class ArticleEntity implements Serializable {

    // 作者信息
    private String writer;

    // 文章信息
    @Id
    private Long id;

    private String title;

    private String content;

    // 归属信息
    private Long admin;
}

  1. City 属性名不支持驼峰式。
  2. indexName 配置必须是全部小写,不然会出异常。 org.elasticsearch.indices.InvalidIndexNameException: Invalid index name [provinceIndex], must be lowercase

ES 数据操作层实现代码如下:

@Repository
public interface ArticleRepository extends ElasticsearchRepository<ArticleEntity, Long> {

}

接口只要继承 ElasticsearchRepository 接口类即可,具体使用的是该接口的方法:

    <S extends T> S save(S var1);

    <S extends T> Iterable<S> saveAll(Iterable<S> var1);

    Optional<T> findById(ID var1);

    boolean existsById(ID var1);

    Iterable<T> findAll();

    Iterable<T> findAllById(Iterable<ID> var1);

    long count();

    void deleteById(ID var1);

    void delete(T var1);

    void deleteAll(Iterable<? extends T> var1);

    void deleteAll();
    
    <S extends T> S index(S var1);

    Iterable<T> search(QueryBuilder var1);

    Page<T> search(QueryBuilder var1, Pageable var2);

    Page<T> search(SearchQuery var1);

    Page<T> searchSimilar(T var1, String[] var2, Pageable var3);

    void refresh();

    Class<T> getEntityClass();

增删改查、搜索都有了,不需要我们具体实现,只需我们传入对应的参数即可。

4. 文章搜索 ES 业务逻辑实现类

实现了批量保存到 ES 的接口,代码如下:

@Service
@Primary
@AllArgsConstructor
@Log4j2
public class ArticleServiceImpl implements ArticleService {

    private final ArticleRepository articleRepository;

    @Override
    public boolean saveArticles(List<ArticleBean> articleBeanList) {

        List articleEntityList = transferToArticleEntityList(articleBeanList);
        articleRepository.saveAll(articleEntityList);

        return true;
    }

	... 省略
} 

4. Spring Boot 操作 ES

用 Postman 工具新增文章:

POST /api/articles HTTP/1.1
Host: 127.0.0.1:8080
Content-Type: application/json
Cache-Control: no-cache
Postman-Token: d6288a82-b98f-1c1e-6dad-15b0223102ab

[
	{
    	"id":2,
    	"title":"文章题目",
    	"writer":"温岭",
    	"content":"温岭是个沿海城市",
    	"admin":1
	},
	{
    	"id":3,
    	"title":"文章题目文章题目文章题目",
    	"writer":"温1岭",
    	"content":"温2岭是个沿海城市",
    	"admin":1
	}
]

然后在 Kibana 设置 indexName 为 “elasticsearch”,并打开 Discover tab,可以看到数据,并可以搜索查询,如图:

更多 ES 文章:

  • 《Spring Boot 整合 Elasticsearch》
  • 《深入浅出 spring-data-elasticsearch 之 ElasticSearch 架构初探(一)》
  • 《深入浅出 spring-data-elasticsearch 系列 – 概述及入门(二)》
  • 《深入浅出 spring-data-elasticsearch – 基本案例详解(三)》
  • 《深入浅出 spring-data-elasticsearch – 实战案例详解(四)》

关注即可得系列教程文章哦!

作者:SpringForAll

原文地址:https://my.oschina.net/u/3677020/blog/1586271文章来源地址https://www.toymoban.com/news/detail-830701.html

喜欢 0

到了这里,关于Spring Boot 2.0 M7 整合 ES 5 、Kibana 和 X-pack的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Logback:SpringBoot 2.0 整合 Logback (kafaka es)

    1. 规范了日志的打印格式    2. 增加了彩色日志输出   3. 支持异步推送kafka   4. 日志文件压缩功能 我们无需关心 Logback 版本,只需关注 Boot 版本即可,Parent 工程自动集成了 Logback。Springboot 本身就可以打印日志,为什么还需要规范日志? 日志统一,方便查阅管理。 日志归

    2024年04月22日
    浏览(27)
  • Spring Boot 2.0 @ModelAttribute

    Spring Boot 2.0 中的注解 @ModelAttribute 有什么作用呢? 通常情况下,我们会将 @ModelAttribute 注解放置在 Controller 中的某个方法上,那么,如果您在请求这个 Controller 中定义的 URI 时,会首先调用这个被注解的方法,并将该方法的结果作为 Model 的属性,然后才会调用对应 URI 的处理

    2024年02月08日
    浏览(29)
  • 大数据技术(入门篇) --- 使用 Spring Boot 操作 CDH6.2.0 Hadoop

    本人是web后端研发,习惯使用spring boot 相关框架,因此技术选型直接使用的是spring boot,目前并未使用 spring-data-hadoop 依赖,因为这个依赖已经在 2019 年终止了,可以点击查看 ,所以我这里使用的是自己找的依赖, 声明:此依赖可能和你使用的不兼容,我这个适用于我自己的

    2024年02月02日
    浏览(36)
  • 【Spring Boot】Spring Boot整合多数据源

    在实际的开发工作中,我们经常会遇到需要整合多个数据源的情况,比如同时连接多个数据库、读写分离、跨数据库查询等。本文将介绍如何使用Spring Boot来实现多数据源的整合,对于刚刚接触开发的小伙伴可能有一些帮助。 在一个应用程序中使用多个数据源意味着我们需要

    2024年02月10日
    浏览(33)
  • 六、Spring/Spring Boot整合ActiveMQ

    2.1 applicationContext.xml 路径:src/main/resources/applicationContext.xml 2.2 生产者 2.3 消费者 3.1 applicationContext.xml 路径:src/main/resources/applicationContext.xml 3.2 生产者 和队列的代码一样,只是在配置文件里面改了destination 3.3 消费者 和队列的代码一样,只是在配置文件里面改了destination 实现

    2024年02月22日
    浏览(34)
  • Spring Boot进阶(96):轻松上手:实战Spring Boot整合Docker

      Docker 是一个开源的应用程序容器化工具,它可以将应用程序和依赖组件打包到一个容器中,实现应用程序的快速部署和运行。Spring Boot 是一个快速开发应用程序的框架,使用 Spring Boot 可以快速构建各种各样的应用程序。本文将介绍如何使用 Spring Boot 整合 Docker,实现应用

    2024年02月07日
    浏览(40)
  • Spring Boot整合WebSocket

    在HTTP协议中,所有的请求都是由客户端发起的,由服务端进行响应,服务端无法向客户端推送消息,但是在一些需要即时通信的应用中,又不可避免地需要服务端向客户端推送消息,传统的解决方案主要有如下几种。 轮询 轮询是最简单的一种解决方案,所谓轮询,就是客户

    2024年02月05日
    浏览(74)
  • Spring Boot 整合 Mybatis

    导入依赖的时候,需要根据自己所使用的Spring Boot和MySQL的版本而定。 我这里使用的是MySQL数据库。 首先创建一个mybatis_learn的数据库。然后创建一个student的表。 对应的,要实现一个Java的实体类,来对应数据库的表。 创建如图结构的各个包和文件。 这个接口是对应Mybatis的

    2024年02月03日
    浏览(39)
  • Spring Boot 整合 Kafka

    环境:自行创建 Spring Boot 项目,添加测试依赖,并启动 Zookeeper 和 kafka 服务。 注意:Zookeeper 默认好像占用 8080 端口,自己注意端口占用问题。 1. 添加依赖 2. 添加配置 3. 创建消息生产者 4. 创建消息消费者 5. 消息发送测试

    2023年04月11日
    浏览(29)
  • Spring Boot整合MyBatis

    在开发中,通常会涉及到对数据库的数据进行操作,Spring Boot在简化项目开发以及实现自动化配置的基础上,对关系型数据库和非关系型数据库的访问操作都提供了非常好的整合支持。 Spring Boot默认采用整合SpringData的方式统一处理数据访问层,通过添加大量自动配置,引入各

    2024年02月06日
    浏览(35)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包