SpringBoot + Elasticsearch + Kibana (7.8.1)入门应用

news/2024/11/25 5:38:55/

一、下载安装

  1. ElasticSearch 下载地址

…/elasticsearch-7.8.1/bin 的 elasticsearch.bat
…/elasticsearch-7.8.1/config/elasticsearch.yml

//# 主要配置 
network.host: 127.0.0.1
http.port: 9200
//# 解决跨域访问
http.cors.enabled: true
http.cors.allow-origin: "*"
  1. Kibana下载地址 一个客户端数据展示项目

kibana-7.8.1-windows-x86_64\bin\kibana.bat
kibana-7.8.1-windows-x86_64\config\kibana.yml

// # es地址
elasticsearch.hosts: ["http://127.0.0.1:9200/"]
// # 汉化
i18n.locale: "zh-CN"
  1. elasticsearch-head-master下载地址 使用这个客户端需要nodejs环境,需要提前下载。是另一个客户端数据展示项目。可以只单用kibana,也可以配合使用。

使用教程参考github readme

注意:kibana 和 ES 版本要完全一致;jkd8 以上可用

二、使用kibana操作Es的指令示例

put
get

三、Springboot + Es 集成项目搭建

  1. 新建一个空SpringBoot项目。
  2. 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 https://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.2.5.RELEASE</version><relativePath/> <!-- lookup parent from repository --></parent><groupId>com.yxpweb</groupId><artifactId>elks</artifactId><version>0.0.1-SNAPSHOT</version><name>elks</name><description>Demo project for Spring Boot</description><properties><java.version>1.8</java.version></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId><version>2.3.0.RELEASE</version></dependency><dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.62</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope><exclusions><exclusion><groupId>org.junit.vintage</groupId><artifactId>junit-vintage-engine</artifactId></exclusion></exclusions></dependency><dependency><groupId>org.elasticsearch.client</groupId><artifactId>elasticsearch-rest-high-level-client</artifactId><version>7.8.1</version></dependency><dependency><groupId>org.elasticsearch</groupId><artifactId>elasticsearch</artifactId><version>7.8.1</version></dependency><dependency><groupId>org.elasticsearch.client</groupId><artifactId>elasticsearch-rest-client</artifactId><version>7.8.1</version></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build></project>

注意:引入elasticsearch-rest-high-level-client(7.8.1)的自带版本和我们下载的ES版本不一致,需要手动添加elasticsearch(7.8.1)和elasticsearch-rest-client(7.8.1),否则会有报错,无法使用。用自己引入7.8.1的将原来的6.8.6覆盖。
在这里插入图片描述

  1. 新建User.java 的 pojo 类
@Component
public class User {private String name;private int age;public User(){}public User(String name, int age){this.name = name;this.age = age;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}@Overridepublic String toString() {return "User{" +"name='" + name + '\'' +", age=" + age +'}';}
}

如果用Lombok可以不用getset 方法。但是不建议使用Lombok。

四、使用的@Test注解做初步测试。

  1. 创建Client注入到spring
@Configuration
@Component
public class ElasticSearchConfig {@Beanpublic RestHighLevelClient restHighLevelClient(){return new RestHighLevelClient(RestClient.builder(new HttpHost("localhost", 9200, "http")));}
}

在这里插入图片描述

  1. 测试包下创建测试类 com.yxpweb.elks.ElksApplicationTests,注入客户端。
    在这里插入图片描述
@SpringBootTest
class ElksApplicationTests {@AutowiredRestHighLevelClient restHighLevelClient;
}

以下代码添加在ElksApplicationTests 类中。

  1. 创建索引 yxpweb-elk
@Testvoid testCreateIndex() {CreateIndexRequest createIndexRequest = new CreateIndexRequest("yxpweb-elk");try {CreateIndexResponse createIndexResponse = restHighLevelClient.indices().create(createIndexRequest, RequestOptions.DEFAULT);System.out.println(createIndexResponse);} catch (IOException e) {e.printStackTrace();}}
  1. 判断索引是否存在
@Testvoid testExistIndex() throws IOException {GetIndexRequest getIndexRequest = new GetIndexRequest("yxpweb-elk");boolean createIndexResponse = restHighLevelClient.indices().exists(getIndexRequest, RequestOptions.DEFAULT);System.out.println(createIndexResponse);}
  1. 通过id删除索引中的数据
DELETE /yxpweb_user/_doc/1
@Testvoid testDeleteDocumentIndex() throws IOException{DeleteRequest deleteIndexRequest = new DeleteRequest("yxpweb-elk", "1");DeleteResponse deleteResponse = restHighLevelClient.delete(deleteIndexRequest, RequestOptions.DEFAULT);//DeleteResponse[index=yxpweb_user,type=_doc,id=1,version=11,result=deleted,shards=ShardInfo{total=2, successful=1, failures=[]}]System.out.println(deleteResponse);}

即使数据已经被删除,依然会返回结果。version号会被更新。

  1. 删除索引
@Testvoid testDeleteIndex() throws IOException{DeleteIndexRequest deleteIndexRequest = new DeleteIndexRequest("yxpweb-elk");deleteIndexRequest.timeout(TimeValue.timeValueMinutes(2));deleteIndexRequest.timeout("2m");AcknowledgedResponse acknowledgedResponse = restHighLevelClient.indices().delete(deleteIndexRequest, RequestOptions.DEFAULT);System.out.println(acknowledgedResponse.isAcknowledged());}
  1. 添加文档
@Testvoid testAddDocument() throws IOException {User yxp = new User("yxp", 33);IndexRequest indexRequest = new IndexRequest("yxpweb_user");indexRequest.id("1");indexRequest.timeout(TimeValue.timeValueSeconds(1));indexRequest.timeout("1s");indexRequest.source(JSON.toJSONString(yxp), XContentType.JSON);IndexResponse indexResponse = restHighLevelClient.index(indexRequest, RequestOptions.DEFAULT);System.out.println(indexResponse.toString());System.out.println(indexResponse.status());}

更多操作 参考 API


http://www.ppmy.cn/news/586603.html

相关文章

几种开源TCP/IP协议概述--LwIP,uIP,TinyTcp和uC/IP

1、BSD TCP/IP协议栈 BSD栈历史上是商业栈的起点&#xff0c;大多数专业TCP/IP栈&#xff08;VxWorks内嵌的TCP/IP栈&#xff09;是BSD栈派生的。这是因为BSD栈在BSD许可协议下提供了这些专业栈的雏形&#xff0c;BSD许用证允许BSD栈以修改或未修改的形式结合这些专业栈的代码而…

算法设计与分析:Word Ladder(Week 4)

学号&#xff1a;16340008 题目&#xff1a;127. Word Ladder Question: Given two words (beginWord and endWord), and a dictionarys word list, find the length of shortest transformation sequence from beginWord to endWord, such that: Only one letter can be ch…

DOM系列:DOM树和遍历DOM

上一节&#xff0c;咱们整理了DOM系列中的第一篇&#xff0c;主要介绍浏览器与DOM相关的知识。从标题中我们可以看出来&#xff0c;今天所要学的东西包含两个部分&#xff0c;第一部分是DOM树&#xff0c;第二部分是遍历DOM。如果你和我一样对于DOM树和遍历DOM是初次接触&#…

win10嵌入式linux,基于Microwindows的嵌入式Linux轻量级图形应用库的

嵌入式Linux系统的很多应用领域&#xff0c;诸如消费类电子产品、测量控制设备等&#xff0c;图形用户界面不仅在技术上是软件系统设计的一个重点&#xff0c;而且在商业上也关系到用户对该产品接受的程度。本文引用地址&#xff1a;http://www.eepw.com.cn/article/201610/305…

嵌入linux的广泛应用(转)

嵌入linux的广泛应用(转) 现在 Linux 广泛用于各类计算应用&#xff0c;不仅包括 微型 Linux 腕表、手持设备&#xff08;PDA 和蜂窝电话&#xff09;、因特网装置、瘦客户机、防火墙、工业机器人和电话基础设施设备&#xff0c;甚至还包括了基于集群的超级计算机。让我们看一下…

基于Docker构建ELK以及集成SpringBoot+Kafka发送日志完整流程

本文所用系统环境:CentOS7 docker安装不在阐述 elk所有版本全部基于6.5.1 安装到集成一共三个大步骤: 一.安装ELK 二.安装kafka 三.SpringBoot集成kafka传输日志 一.安装ELK 1.kibana 直接执行以下代码,会自动执行安装以及启动全部过程 docker run -d -p 5601:5601 --name k…

linux轻量级的图形库,嵌入式Linux轻量级图形应用库应该如何设计

描述 Linux是一套免费使用和自由传播的类Unix操作系统&#xff0c;是一个基于POSIX和UNIX的多用户、多任务、支持多线程和多CPU的操作系统。它能运行主要的UNIX工具软件、应用程序和网络协议。它支持32位和64位硬件。Linux继承了Unix以网络为核心的设计思想&#xff0c;是一个性…

人类微生物组和缺失遗传力--读论文

读读论文&#xff0c;用谷歌学术翻译一下&#xff0c;重要的部分做一下笔记。正文部分是翻译&#xff0c;加黑部分是个人笔记。 本次学习的论文&#xff1a;https://www.ncbi.nlm.nih.gov/pmc/articles/PMC5468393/ 1. 摘要 “缺失遗传力”问题表明&#xff0c;全基因组关联…