41. 从零开始学springboot整合ElasticSearch

ElasticSearch8 - SpringBoot整合ElasticSearch 本文介绍了 SpringBoot 整合 ElasticSearch 的两种方案,但均只是简单提及,更详细的用法需要自行查看官方文档。 阅读详情

Elastic介绍

在2018年10月5日,一个做数据搜索服务的软件初创公司 Elastic,在纳斯达克上市。

image

而我们所熟悉的 ElasticSearch,正是 Elastic 公司最出名的产品之一,其中还包括有分布式日志解决方案 ELK(Elastic Search、Logstash、Kibana)、Beats、ECE等。

那 ElasticSearch 究竟是干啥的呢?

本质其实是一个基于 Lucene 开发的搜索服务器,它提供了一个基于 RESTful web 接口的分布式多用户能力的全文搜索引擎,能够达到实时搜索、稳定、可靠、快速、安装使用方便等特点。

同时,作为 Apache 许可条款下的开放源码,目前已经成为一种流行的企业级搜索引擎。

既然在企业开发中如此流行,肯定少不了 Springboot 的参与,今天我们就一起来探讨一下 SpringBoot 与 ElasticSearch 的整合,看看它是否真的如所介绍的那样优秀!

本文主要介绍分为以下几个部分:

  • 第一部分:环境准备,安装ElasticSearch,安装 ElasticSearch-head 插件可视化web界面
  • 第二部分:SpringBoot 整合 ElasticSearch 开发
  • 第三部分:CRUD 测试

ElasticSearch 安装

为了和真实环境一致,我们采用CentOS7来部署 ElasticSearch 服务。

建议把所需的安装包,手动从网上下载下来,因为“都懂的”原因!所以服务器下载 ElasticSearch 安装包非常慢.

登录https://www.elastic.co/cn/downloads/elasticsearch,选择相应的系统环境下载软件包,咸鱼君用的是CentOS,所以选择Linux环境。

image

安装JDK(已经安装过,可以跳过)

Elasticsearch 是用 Java 语言开发的,所以在安装之前,需要先安装一下JDK

yum -y install java-1.8.0-openjdk

查看java安装情况

java -version

image.png

安装ElasticSearch

进入对应文件夹,安装ElasticSearch

rpm -ivh elasticsearch-6.1.0.rpm

查找安装路径

rpm -ql elasticsearch

一般是装在/usr/share/elasticsearch/下。

设置data的目录

创建/data/es-data目录,用于elasticsearch数据的存放

mkdir -p /data/es-data

修改该目录的拥有者为elasticsearch

chown -R elasticsearch:elasticsearch /data/es-data
设置log的目录
mkdir -p /log/es-log

修改该目录的拥有者为elasticsearch

chown -R elasticsearch:elasticsearch /log/es-log
修改配置文件elasticsearch.yml
vim /etc/elasticsearch/elasticsearch.yml

修改如下内容:

#设置节点名称
cluster.name: my-es

#设置data存放的路径为/data/es-data
path.data: /data/es-data

#设置logs日志的路径为/log/es-log
path.logs: /log/es-log

#设置内存不使用交换分区,配置了bootstrap.memory_lock为true时反而会引发9200不会被监听,原因不明
bootstrap.memory_lock: false

#设置允许所有ip可以连接该elasticsearch
network.host: 0.0.0.0

#开启监听的端口为9200
http.port: 9200

#增加新的参数,为了让elasticsearch-head插件可以访问es (5.x版本,如果没有可以自己手动加)
http.cors.enabled: true
http.cors.allow-origin: "*"
启动elasticsearch

启动

systemctl start elasticsearch

查看状态

systemctl status elasticsearch

设置开机启动

systemctl enable elasticsearch

启动成功之后,测试服务是否开启

curl -X GET http://localhost:9200

返回如下信息,说明安装、启动成功了

image.png

同时也可以远程测试一下,如果网络被拒绝,检查防火墙是否开启

查询防火墙状态

firewall-cmd --state

如果状态是active表示已经开启,可以将其关闭

关闭防火墙

systemctl stop firewalld.service

如果不想开机启动,可以输入如下命令

禁止firewall开机启动

systemctl disable firewalld.service

ElasticSearch-head 安装

上面我们介绍了 ElasticSearch 的安装,但是只能通过接口去查询数据,能不能通过可视化界面来查询数据呢?

ElasticSearch-head,就是一个提供可视化界面的 ElasticSearch 插件,使用 Html5 开发,本质上还是一个 nodejs 的工程,因此在使用之前需要先安装 nodeJs。

安装 nodeJs

下载nodeJS

wget https://nodejs.org/dist/v10.9.0/node-v10.9.0-linux-x64.tar.gz

解压下载包

tar -zxvf node-v10.9.0-linux-x64.tar.gz

移动解压之后的文件夹到/usr/local

mv node-v10.9.0-linux-x64 /usr/local/nodejs

创建软链接,让npm和node命令全局生效

ln -s /usr/local/nodejs/bin/node /usr/bin/node
ln -s /usr/local/nodejs/bin/npm /usr/bin/npm

查看nodejs是否安装成功

node -v
npm -v

image

安装 elasticsearch-head

如果未安装git ,则先安装git工具

yum install –y git

查看git安装情况

git --version

image

从 gitHub 上拉取 elasticsearch-head 插件代码

git clone https://github.com/mobz/elasticsearch-head.git

进入elasticsearch-head文件夹

cd elasticsearch-head

因为npm安装非常非常慢,所以在这里先安装淘宝源地址,命令如下:

npm install cnpm -g --registry=https://registry.npm.taobao.org

创建cnpm软链接,不然执行下面执行命令会报错

ln -s /usr/local/nodejs/bin/cnpm /usr/local/bin/cnpm

使用cnpm命令下载安装项目所需要的插件

cnpm install

大概2分钟之后就安装好了,安装完成之后,修改配置信息

vim _site/app.js

image

将localhost换成elasticsearch的服务器地址,咸鱼君部署的这台是197.168.24.207。

image

换完之后,在elasticsearch-head目录下,输入如下命令,进入启动目录

cd node_modules/grunt/bin

使用如下命令启动服务,使elasticsearch-head服务在后台运行!

nohup ./grunt server &

最后,直接远程通过浏览器访问elasticsearch-head可视化管理界面,默认访问地址是ip:9100,访问结果如下!

image

至此,elasticsearch的安装包括可视化界面插件elasticsearch-head已经完成了!

SpringBoot 整合 ElasticSearch

对于 SpringBoot 来说,ElasticSearch 其实只是一个中间件,用途在于提供高效的搜索服务,比较幸运的是 SpringBoot 也为我们提供了 ElasticSearch 依赖库,添加依赖包,通过 JPA 访问非常方便,整合过程如下!

创建一个SpringBoot项目

在pom.xml中,添加依赖库 ElasticSearch 依赖包

<!--jpa 支持-->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<!--elasticsearch-->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-elasticsearch</artifactId>
</dependency>

在application.properties中添加配置,其中节点名称cluster-name需要与上面的配置保持一致!

spring.data.elasticsearch.cluster-name=my-es
spring.data.elasticsearch.cluster-nodes=197.168.24.207:9300
编写 CURD

我们先写一个的实体类Student,借助这个实体类来完成基础的 CRUD 功能。

  • 新增实体类Student,其中indexName表示索引,type表示索引类别
@Data
@Accessors(chain = true)
@Document(indexName = "student", type = "school")
public class Student {

    private static final long serialVersionUID = 1l;

    @Id
    private String id;

    private String name;

    private String gender;

    private Integer age;
}

注意id字段是必须的,可以不写注解@Id!

  • 使用 JPA 作为数据持久层,接口继承自ElasticsearchRepository,同时新增两个自定义查询方法
public interface StudentRepository extends ElasticsearchRepository<Student, String> {

    /**
     * 通过姓名模拟查询学生信息
     * @param keyword
     * @return
     */
    List<Student> findByNameLike(String keyword);

    /**
     * 自定义查询,固定匹配查询学生信息
     * @param keyword
     * @return
     */
    @Query("{\"match_phrase\":{\"name\":\"?0\"}}")
    List<Student> findByNameCustom(String keyword);
}
  • 创建控制层,编写基础的 CRUD 功能
@RestController
@RequestMapping("/student")
public class StudentController {

    @Autowired
    private StudentRepository studentRepository;

    @Autowired
    private ElasticsearchTemplate elasticsearchTemplate;

    /**
     * 批量添加
     * @param students
     * @return
     */
    @PostMapping("/batchAdd")
    public void add(@RequestBody List<Student> students){
        studentRepository.saveAll(students);
    }

    /**
     * 添加
     * @param student
     * @return
     */
    @PostMapping("/add")
    public void add(@RequestBody Student student){
        studentRepository.save(student);
    }

    /**
     * 修改
     * @param student
     * @return
     */
    @PostMapping("/update")
    public void updateById(@RequestBody Student student){
        studentRepository.save(student);
    }

    /**
     * 删除
     * @param id
     * @return
     */
    @PostMapping("/delete/{id}")
    public void deleteById(@PathVariable String id){
        studentRepository.deleteById(id);
    }

    /**
     * 获取所有信息
     * @return
     */
    @GetMapping("/get")
    public Object getAll(){
        Iterable<Student> iterable = studentRepository.findAll();
        List<Student> list = new ArrayList<>();
        iterable.forEach(list :: add);
        return list;
    }

    /**
     * 查询指定ID
     * @param id
     * @return
     */
    @GetMapping("/get/{id}")
    public Object getById(@PathVariable String id){
        if(StringUtils.isEmpty(id)){
            return Result.error();
        }
        Optional<Student> studentOptional = studentRepository.findById(id);
        if(studentOptional.isPresent()){
            return studentOptional.get();
        }
        return null;
    }

    /**
     * 普通搜索
     * @param keyword
     * @return
     */
    @GetMapping("/search/name")
    public Object searchName(String keyword){
        List<Student> students = studentRepository.findByNameLike(keyword);
        return students;
    }

    /**
     * 自定义匹配
     * 普通搜索
     * @param keyword
     * @return
     */
    @GetMapping("/search/name/custom")
    public Object searchTitleCustom(String keyword){
        List<Student> students = studentRepository.findByNameCustom(keyword);
        return students;
    }

    /**
     * 高级搜索,可以自定义添加搜索字段
     * @param keyword
     * @return
     */
    @GetMapping("/top/search/name")
    public Object topSearchTitle(String keyword){
        SearchQuery searchQuery = new NativeSearchQueryBuilder()
                .withQuery(queryStringQuery(keyword))
                .build();
  //使用searchQuery进行搜索
        List<Student> students = elasticsearchTemplate.queryForList(searchQuery, Student.class);
        return students;
    }
}
CRUD 测试

CRUD 编写完了,我们验证一下是否可以正常操作,启动 springboot 项目,使用 postman 进行测试。

  • 批量新增、新增功能测试

image

image

执行之后,登录可视化界面查询界面,选择索引student,可以很清晰的看到数据已经进去了

image

  • 修改功能测试,修改时需要传入ID

image

将王小贱从26岁修改为30岁,登录可视化界面查询数据也已经修改成功!

image

  • 删除功能测试,只需要传入ID

image

删除李四,登录可视化界面查询数据也已经删除成功!

image

  • 查询功能测试,查询所有数据

image

  • 查询功能测试,查询指定ID信息

image

  • 查询功能测试,普通模糊查询,ElasticSearch 会对关键词进行拆分,只要有包含关键字的都会查询出来,例如输入王张,会将包含王或者张的姓名信息查询出来

image

  • 查询功能测试,高级查询,这个是使用官方api提供的查询入口,可以在方法中进行自定义搜索

image

总结

elasticsearch 在海量数据查询方面,非常高效,本来想写在大量数据查询方面,数据库与 elasticsearch 的查询效率比对,由于篇幅较长会造成阅读体验降低,后在下篇文章中再次介绍这个部分。

对于想学习 elasticsearch 的新手,尤其是安装部分可能比较困难,因此花的编写时间比较多,后续的整合都比较简单,elasticsearch 真正的强大的地方在于高效信息搜索,本篇对 elasticsearch 的搜索只是做一个基础的介绍,具体的高级搜索方法大家可以参考官方文档 API.

请关注我的订阅号

订阅号.png

springboot整合elasticsearch实现类似于mysql的like查询 springboot整合elasticsearch、RestHighLevelClient实现多字段模糊查询及时间段查询 阅读详情

相关推荐

Elasticsearch8搭建及Springboot中集成使用

Elasticsearch8搭建及Springboot中集成使用 1.搭建;2.springboot中集成配置,基础框架结构,通用方法及业务示例。

JavaEE菜鸟 4818

百亿级数据10万字段属性的秒级检索解决方案以及实现

平台型创业型公司,会有多个品类,像生活信息服务类网站的有:58同城,赶集网等等,他们的类别非常多,每个垂直领域都会分为很多类别,每 个类别下又分很多子类别,每个类别或者子类别的属性都不一样,像这么庞大的数据,字段属性可以达到10万级别,同时数据量可以达到百 亿级别 ,很多异构数据的存储需求。基于这么庞大的数据,我们需要达到秒级查询。那么我们该怎么设计呢?本课程讲手把手带大家一步一步去实现这个项目,从简单到复杂,不断演进。通过方案讲解以及代码实现,让大家清晰的学习该类系统的设计思想。该项目是一个可用的项目,商业价值极高,大家可以根据自己企业的需求,稍加改动就可以用到自己的项目中去。开发工具:IDEA本课程用到技术:Spring Boot 版本:2.0.2.RELEASE、Spring Cloud  版本:Finchley.RELEASEKafka、Redis、Zookeeper、Elasticsearch、JPA等

SpringBoot整合ElasticSearch

SpringBoot整合ElasticSearch配置springboot版本目录结构pom.xmlapplication.yml代码ElasticSearchConfig.javaElasticSearchController.java 配置 springboot版本 <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-paren

没有梦想何必远方# 1334

SpringBoot整合Elasticsearch与综合实例(二):搜索、分页、排序

Elasticsearch 是一个分布式、可扩展、近实时的高性能搜索与数据分析引擎。Elasticsearch 基于 Apache Lucene 构建,采用 Java 编写,并使用 Lucene 构建索引、提供搜索功能。Elasticsearch 的目标是让全文搜索功能的落地变得简单。本文是SpringBoot整合Elasticsearch与综合实例的第二篇,主要实现SpringBoot整合Elasticsearch实现搜索、分页、排序的相关操作。 (1)创建SpringBoot项目,项目结构如下图:(2)

wkywky123的博客 1684

【国产化信创实践】宝兰德bes中间件集成springboot

【国产化信创实践】宝兰德bes中间件集成springboot

项目管理、软件工厂、vue研发、Java研发、中国文化等。 1万+

SAP Business One自定义表与字段实战:从零构建企业专属数据模型

本文详细介绍了如何在SAP Business One中创建自定义表与字段,从零构建企业专属数据模型。通过实战案例和避坑指南,帮助用户掌握业务适配、流程优化和权限隔离等关键技巧,提升系统灵活性和数据管理效率。特别适合需要扩展标准功能的SAP Business One用户。

weixin_28730927的博客 359

Springboot整合spring-boot-starter-data-elasticsearch

spring-data-elasticsearch的查询,相当于原生的es依赖而言,多了一些注解封装、repository类等,但是对于复杂查询还是没有办法很简便,因此便有了第三方的依赖Easy-es的诞生,类似于Mybatis-plus的方式,对于新手对es的使用比较友好,后面会进行讲解最后:我是Walker,一个热爱分享的程序员,希望我的输出能够帮助到你。

Think_and_work的博客 1906

KUKA 虚拟调试实战——打通Simpro4.1与OfficeLite8.6的通信与实时控制链路

本文详细介绍了KUKA虚拟调试实战,重点解析如何打通Simpro4.1与OfficeLite8.6的通信与实时控制链路。通过环境搭建、权限配置、机器人型号匹配等关键步骤,帮助工程师高效完成机器人轨迹规划和PLC联锁逻辑验证,大幅降低真机调试风险。文章还提供了典型报错解决方案和实时控制优化技巧,适用于工业机器人仿真与培训场景。

weixin_30907935的博客 444

SpringBoot整合(一)SpringBoot整合Redis、ES7.6、Quartz

SpringBoot整合(一)SpringBoot整合Redis、ES7.6、Quartz

qq_44665283的博客 2211

Keil v5.11给STM32烧录程序记录

1)安装KeilMDK511 2)安装ST Link下载器驱动 3)打开Keil v5,加载工程文件 4)load pack(Keil.STM32F1xx_DFP.1.1.0和Keil.STM32F0xx_DFP.1.2.0) 5)编译程序- 0 Error(s), 0 Warning(s). 6)烧录程序 ...

守望的距离 6281

从BSCAN到BAP:深度解析Tessent MBIST逻辑的协同工作机制与设计考量

本文深入解析了Tessent MBIST逻辑中BSCAN Interface、Logic Group Def、Controller与BAP模块的协同工作机制。文章以一条测试指令的完整路径为例,详细阐述了数据流与控制流如何跨模块、跨时钟域协同工作,并重点探讨了MBIST BAP在协议转换与流量管理中的核心桥梁作用,为芯片内建自测试的集成与调试提供了关键的设计考量和实战技巧。

kappa的博客 479

Java连接ElasticSearch(springboot2.X配置ES连接的方式)

springboot2.X配置ES连接的3种方式 Java连接ElasticSearch Java连接ElasticSearch的2种方式 有两种方式: 一种 是9200端口(RestClient)rest 接口,基于http协议; 另一种是用 节点的9300端口(TransportClient),基于Tcp协议;(不推荐使用,理由如下) es7.X 版本的改变 简单点说就是 TransportC...

weixin_35720385的博客 1万+

华为OD机考双机位C卷 - 评委评分 (Java & Python& JS & C/C++ & GO )

华为OD机考双机位C卷 - 评委评分 (OD上机考试双机位C卷)。提供在线OJ刷题。Java、C++、Python、GO语言、C语言、JavaScript题解,并提供完整思路讲解。

算法大师! 1750

springboot整合ES

1、新建一个maven项目 2、导入相应的jar包 1 <?xml version="1.0" encoding="UTF-8"?> 2 <project xmlns="http://maven.apache.org/POM/4.0.0" 3 xmlns:xsi="http://www.w3.org/2001/XMLSchema...

dayiyang9635的博客 1166

CANbus收发器TJA1051T/3/1J应用原理图设计

该收发器是为汽车工业中的高速CAN应用而设计的,为(一个带有)CAN协议控制器的微控制器)提供差分传输和接收能力。它提供了改进的电磁兼容性(EMC)和静电放电(ESD)性能,还具有:当电源电压关闭时,TJA1051T/3和TJA1051TK/3可以直接与电源电压从3V到5V的微控制器接口。这种实现能够在CAN FD快速阶段以高达5 Mbit/s的数据速率进行可靠的通信。TJA1051T/3和TJA1051TK/3上的VIO输入允许直接连接3 V至5 V微控制器(分别提供SO8和极小的HVSON8封装)

zhusl6688的博客 3593

SAP-ABAP:FI财务会计模块常用BAPI及核心用途实例说明

SAP FI模块的BAPI覆盖了从主数据管理、凭证过账到财务关账的全流程操作,是系统集成与自动化的重要工具。实际应用中需结合业务场景选择合适的BAPI,并严格遵循事务控制与校验规则。如需扩展功能,可通过BAdI或用户出口增强标准逻辑。

baidu_35680696的博客 1600

视频教程-SpringBoot整合ElasticSearch实现电商高性能搜索引擎-Java

SpringBoot整合ElasticSearch实现电商高性能搜索引擎 张...

weixin_32422357的博客 529

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

springboot整合elasticsearch

一、ES简介 ElasticSearch 是一个基于 Lucene 的搜索服务器。它提供了一个分布式多员工能力的全文搜索引擎,基于 RESTful web 接口。Elasticsearch 是用 Java 语言开发的,并作为 Apache 许可条款下的开放源码发布,是一种流行的企业级搜索引擎。 ElasticSearch 用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。 特点: 分布式的文档存储引擎 分布式的搜索引擎和分析引擎 分布式,支持PB级数据 使用场景: 搜索领域: 如百度、谷歌

qq_15901351的博客 592

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

spring boot>>整合elasticsearch

在这一篇文章开始之前,你需要先安装一个ElasticSearch,如果你是windows环境可以参考windows上安装 ElasticSearch-Head插件和Elasticsearch这篇文章。 官方介绍ElasticSearch: ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticse...

freedom 358

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

elasticsearch7.6.x 整合springboot2(一)

elasticsearch7.6.x 整合springboot2一、RestFul风格说明二、索引的基本操作增删改查 一、RestFul风格说明 一种软件架构风格,而不是标准,只是提供了一组设计原则和约束条件。它主要用于客户端和服务器交 互类的软件。基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存等机制。 PUT localhost:9200/索引名称/类型名称/文档id 创建文档(指定...

刘阳洋的博客 3337

拾忆Elasticsearch03:SpringBoot整合 Elasticsearch

这篇是对上一篇的elasticsearch命令在springboot中进行整合,熟悉各种Java API

goodwin 1090

​SpringBoot 整合 Elasticsearch深度分页查询​

SpringBoot 整合 Elasticsearch深度分页查询 es 查询共有4种查询类型 QUERY_AND_FETCH:   主节点将查询请求分发到所有的分片中,各个分片按照自己的查询规则即词频文档频率进行打分排序,然后将结果返回给主节点,主节点对所有数据进行汇总排序然后再返回给客户端,此种方式只需要和es交互一次。 这种查询方式存在数据量和排序问题,主节点会汇总所有分片返回的数据这样数据量会比较大,二是各个分片上的规则可能不一致。 QUERY_THEN_FETCH: ...

大JAVA解决方案 1048

初学者入门:springboot整合elasticsearch实现空间检索实例(根据经纬度坐标查询)

es的空间检索提供了通过空间距离和位置关系进行检索的能力。将es整合到springboot中,可以轻松实现空间检索模块的编写与使用。 Springboot整合es的具体流程此处不再赘述,若有需要。可以参考如下文档: 从零开始:SpringBoot整合ElasticSearch实现简单增删改查 一. 使用 postman 新增实例 具体使用中,可以自己编写新增接口来向es中批量添加实例。由于上一篇文档中已经详细说明了如何编写增删改...

qq_38736877的博客 2140

从零开始:SpringBoot整合ElasticSearch实现简单增删改查

新建springboot项目就不再赘述,相关教程非常多,很容查到。Elasticsearch在windows与linux环境下的安装与使用可以参考以下文章: Linux/windows环境下后端基础服务(tomcat,MongoDB, docker, elasticsearch等)部署说明 Elasticsearch+Postman简单入门 Springboot集成ElasticSearch 1.引入相关依赖 es版本以自己安装的版本为准 <depende...

qq_38736877的博客 1812

Elasticsearch安装和使用教程

Elasticsearch 是一个分布式、RESTful 风格的搜索和数据分析引擎,能够实现近乎实时的搜索。Elasticsearch官网。

2501_92713943的博客 3507

elasticSearch搜索引擎安装使用,SprignBoot整合Spring Data Elasticsearch,百度云 Elasticsearch安装包

1.Elasticsearch介绍和安装 本文章所有安装包百度云链接: https://pan.baidu.com/s/1jRmA2n164EfLSQgPeOrJDA 提取码:6okn 1.1.简介 1.1.1.Elastic Elastic官网:https://www.elastic.co/cn/ Elastic有一条完整的产品线:Elasticsearch、Kibana、Logstash等...

偷得浮生半日闲 7491
上一篇: 10. 谁再和我提内核/用户态, 我跟谁…………
下一篇: 11. 嗨, 需要谈个对象…………?
码哥说
博客等级 码龄8年 5645粉丝 172原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

码哥说

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值