Elasticsearch+Kibana分布式存储引擎

1.ElaticSearch介绍

ElaticSearch ,简称为 ES ES 是一个开源的高扩展的分布式全文检索引擎,它可以近乎实时的存储、检
索数据;本身扩展性很好,可以扩展到上百台服务器,处理 PB 级别的数据。 ES 也使用 Java 开发并使用
Lucene 作为其核心来实现所有索引和搜索的功能,但是它的目的是通过简单的 Restful Api 来隐藏
Lucene 的复杂性,从而让全文搜索变得简单。
Kibana 也是一个开源和免费的工具, Kibana 可以为 Logstash ElasticSearch 提供的日志分析友好的
Web 界面,可以帮助汇总、分析和搜索重要数据日志(也就是将搜索出的数据进行可视化)。

2.下载elasticsearch 

https://www.elastic.co/guide/en/elasticsearch/reference/7.6/zip-windows.html
安装 Elasticsearch
把下载下来的压缩包解压到系统盘,建议解压到 D 盘,如图

进入bin文件里,双击elasticsearch.bat启动

浏览器输入http://localhost:9200/,显示下图则表示安装成功

安装 kibana
为了方便使用 elastic search Query DSL(Domain Specified Language ,领域专用语言 ) ,需要安装一
Elasticsearch Kibana 可视化控制台管理工具。
下载

 

解压到D盘,打开文件夹 

config文件夹下的kibana.yml文件,找到以下内容并取消注释

server.port: 5601
server.host: "localhost"
# 这个可以随意取名
server.name: "ABC"
# elasticsearch 服务器的地址
elasticsearch.hosts: ["http://localhost:9200"]
# 页面使用中文
i18n.locale: "zh-CN"

 打开文件夹下的bin目录,双击kibaba.bat启动kibaba

启动完成后,在浏览器地址栏输入http://localhost:5601/app/kibana#/dev_tools/console

3.Springboot整合Elasticsearch 

修改 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>
<groupId>com.hz</groupId>
<artifactId>Elasticsearch01</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>Elasticsearch01</name>
<description>Elasticsearch01</description>
<properties>
<java.version>1.8</java.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-
8</project.reporting.outputEncoding>
<spring-boot.version>2.7.6</spring-boot.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.3.0</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.21</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-elasticsearch</artifactId>
</dependency>
<!--运行旧版 JUnit 测试 -->
<dependency>
<groupId>org.junit.platform</groupId>
<artifactId>junit-platform-launcher</artifactId>
<version>1.8.2</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.36</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>${spring-boot.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>${spring-boot.version}</version>
<configuration>
<mainClass>com.hz.Elasticsearch01Application</mainClass>
<skip>true</skip>
</configuration>
<executions>
<execution>
<id>repackage</id>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
实体类 Song.java
package com.hz.entity;
import lombok.Data;
import org.springframework.data.annotation.Id;
import org.springframework.data.elasticsearch.annotations.Document;
import org.springframework.data.elasticsearch.annotations.Field;
import org.springframework.data.elasticsearch.annotations.FieldType;
@Data
@Document(indexName = "songs")
public class Song {
@Id
@Field(type= FieldType.Keyword)
private String id;
/**
* 歌曲名
*/
@Field(type= FieldType.Text, analyzer = "ik_max_word")
private String name;
/**
* 描述信息
*/
@Field(type= FieldType.Text, analyzer = "ik_max_word")
private String note;
/**
* 歌手
*/
@Field(type= FieldType.Text, analyzer = "ik_max_word")
private String singer;
}
SongMapper 文件
package com.hz.mapper;
import com.hz.entity.Song;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
@Mapper
public interface SongMapper {
List<Song> selectAll();
}
创建 Elasticsearch 的查询接口
package com.hz.repository;
import com.hz.entity.Song;
import
org.springframework.data.elasticsearch.repository.ElasticsearchRepository;
import org.springframework.stereotype.Repository;
import java.util.List;
@Repository
public interface SongRepository extends ElasticsearchRepository<Song, String> {
List<Song> findByName(String name);
}

4.使用DSL

DSL 就是 Elasticsearch 特有的查询语言
无条件查询,默认返回 10 条数据
GET /songs/_search
{
"query": {
"match_all": {}
}
}
hits 里是查询结果信息, hits.total.value 表示符合查询条件的总记录数, hits.hits 表示的是返回的数据,
_source 里是具体的数据。
返回结果
{
"took" : 1 ,
"timed_out" : false ,
"_shards" : {
"total" : 4 ,
"successful" : 4 ,
"skipped" : 0 ,
"failed" : 0
},
"hits" : {
"total" : {
"value" : 894 ,
"relation" : "eq"
},
"max_score" : 1.0 ,
"hits" : [
{
"_index" : ".kibana_1" ,
"_type" : "_doc" ,
"_id" : "space:default" ,
"_score" : 1.0 ,
"_source" : {
"space" : {
"name" : " 默认值 " ,
"description" : " 这是您的默认工作区! " ,
"color" : "#00bfb3" ,
"disabledFeatures" : [ ],
"_reserved" : true
},
"type" : "space" ,
"references" : [ ],
"migrationVersion" : {
"space" : "6.6.0"
},
"updated_at" : "2024-11-24T08:40:53.388Z"
}
},
{
"_index" : ".kibana_1" ,
"_type" : "_doc" ,
"_id" : "config:7.6.2" ,
"_score" : 1.0 ,
"_source" : {
"config" : {
"buildNum" : 29199
},
"type" : "config" ,
"references" : [ ],
"updated_at" : "2024-11-24T08:41:03.810Z"
}
},
{
"_index" : ".kibana_1" ,
"_type" : "_doc" ,
"_id" : "telemetry:telemetry" ,
"_score" : 1.0 ,
"_source" : {
"telemetry" : {
"userHasSeenNotice" : true
},
"type" : "telemetry" ,
"references" : [ ],
"updated_at" : "2024-11-24T08:41:19.232Z"
}
},
{
"_index" : ".kibana_1" ,
"_type" : "_doc" ,
"_id" : "maps-telemetry:maps-telemetry" ,
"_score" : 1.0 ,
"_source" : {
"maps-telemetry" : {
"settings" : {
"showMapVisualizationTypes" : false
},
"indexPatternsWithGeoFieldCount" : 0 ,
"mapsTotalCount" : 0 ,
"timeCaptured" : "2024-11-24T08:42:09.877Z" ,
"attributesPerMap" : {
"dataSourcesCount" : {
"min" : 0 ,
"max" : 0 ,
"avg" : 0
},
"layersCount" : {
"min" : 0 ,
"max" : 0 ,
"avg" : 0
},
"layerTypesCount" : { },
"emsVectorLayersCount" : { }
}
},
"type" : "maps-telemetry" ,
"references" : [ ],
"updated_at" : "2024-11-24T08:42:09.877Z"
}
},
{
"_index" : ".kibana_1" ,
"_type" : "_doc" ,
"_id" : "ui-metric:kibana-user_agent:Mozilla/5.0 (Windows NT 10.0;
Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36
Edg/131.0.0.0" ,
"_score" : 1.0 ,
"_source" : {
"ui-metric" : {
"count" : 1
},
"type" : "ui-metric" ,
"references" : [ ],
"updated_at" : "2024-11-24T08:42:38.740Z"
}
},
{
"_index" : ".kibana_1" ,
"_type" : "_doc" ,
"_id" : "ui-metric:console:opened_app" ,
"_score" : 1.0 ,
"_source" : {
"ui-metric" : {
"count" : 2
},
"type" : "ui-metric" ,
"updated_at" : "2024-11-24T09:31:25.704Z"
}
},
{
"_index" : ".kibana_1" ,
"_type" : "_doc" ,
"_id" : "ui-metric:console:GET_search" ,
"_score" : 1.0 ,
"_source" : {
"ui-metric" : {
"count" : 2
},
"type" : "ui-metric" ,
"updated_at" : "2024-11-24T09:32:56.668Z"
}
},
{
"_index" : ".kibana_task_manager_1" ,
"_type" : "_doc" ,
"_id" : "task:Lens-lens_telemetry" ,
"_score" : 1.0 ,
"_source" : {
"migrationVersion" : {
"task" : "7.6.0"
},
"task" : {
"taskType" : "lens_telemetry" ,
"retryAt" : null ,
"runAt" : "2024-11-24T16:00:00.000Z" ,
"startedAt" : null ,
"state" : """{" runs ":1," byDate ":{}," suggestionsByDate ":{}," saved ":
{" saved_30_days ":
{}," saved_overall_total ":0," saved_30_days_total ":0," saved_90_days_total ":0}}""" ,
"params" : "{}" ,
"ownerId" : null ,
"scheduledAt" : "2024-11-24T08:40:55.891Z" ,
"attempts" : 0 ,
"status" : "idle"
},
"references" : [ ],
"updated_at" : "2024-11-24T08:40:59.309Z" ,
"type" : "task"
}
},
{
"_index" : ".kibana_task_manager_1" ,
"_type" : "_doc" ,
"_id" : "task:oss_telemetry-vis_telemetry" ,
"_score" : 1.0 ,
"_source" : {
"migrationVersion" : {
"task" : "7.6.0"
},
"task" : {
"taskType" : "vis_telemetry" ,
"retryAt" : null ,
"runAt" : "2024-11-24T16:00:00.000Z" ,
"startedAt" : null ,
"state" : """{" runs ":1}""" ,
"params" : "{}" ,
"ownerId" : null ,
"scheduledAt" : "2024-11-24T08:40:55.890Z" ,
"attempts" : 1 ,
"status" : "idle"
},
"references" : [ ],
"updated_at" : "2024-11-24T08:40:59.165Z" ,
"type" : "task"
}
},
{
"_index" : "songs" ,
"_type" : "_doc" ,
"_id" : "20210522154331" ,
"_score" : 1.0 ,
"_source" : {
"_class" : "com.hz.entity.Song" ,
"id" : "20210522154331" ,
"name" : " 爱一点 " ,
"singer" : " 王力宏、章子怡 "
}
}
]
}
}
指定返回的数据条数
通过 size 指定需要返回的结果数,以下查询语句将会返回 20 条数据,而非默认的 10
GET /songs/_search
{
"query": {
"match_all": {}
},
"size": 20
}
指定查询字段
_source 是一个数组,指定需要返回哪些字段,设置为 false 则不会返回数据。
GET /songs/_search
{
"query": {
"match_all": {}
},
"size": 5,
"_source": ["name", "singer", "note"]
}
分页查询
通过 from+size 实现分页查询,下面查询了第 6-10 条记录,相当于 mysql 中的 limit 5, 5 (和 mysql 类似,
from 默认为 0
GET /songs/_search
{
"query": {
"match_all": {}
},
"from": 5,
"size": 5
}

 删除索引

DELETE /songs

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/489340.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

The Past, Present and Future of Apache Flink

摘要&#xff1a;本文整理自阿里云开源大数据负责人王峰&#xff08;莫问&#xff09;在 Flink Forward Asia 2024上海站主论坛开场的分享&#xff0c;今年正值Flink开源项目诞生的第10周年&#xff0c;借此时机&#xff0c;王峰回顾了Flink在过去10年的发展历程以及 Flink社区…

OpenAI 正式赋予 ChatGPT 通过视频实时与用户互动的能力

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

java jar包加密 jar-protect

介绍 java 本身是开放性极强的语言,代码也容易被反编译,没有语言层面的一些常规保护机制,jar包很容易被反编译和破解。 受classfinal&#xff08;已停止维护&#xff09;设计启发,针对springboot日常项目开发,重新编写安全可靠的jar包加壳加密技术,用于保护软件版权。 使用说…

arm CPS指令解释

arm CPS指令解释 1 The Current Program Status Register, CPSR1.1 N, Z, C, V, bits [31:28]1.2 Q, bit [27]1.3 SSBS, bit [23]1.4 PAN, bit [22]1.4.1 About the PAN bit 1.5 DIT, bit [21]1.6 GE[3:0], bits [19:16]1.7 E, bit [9]1.8 A, I, F, bits [8:6]1.9 M[4:0], bits…

VSCode 报错:rust-analyzer requires glibc >= 2.28 in latest build

报错信息 /home/jake/.vscode-server-insiders/extensions/matklad.rust-analyzer-0.3.953/server/rust-analyzer: /lib/x86_64-linux-gnu/libc.so.6: version GLIBC_2.29 not found (required by /home/jake/.vscode-server-insiders/extensions/matklad.rust-analyzer-0.3.9…

GFPS扩展技术原理(一)消息流

消息流作用 Google fast pair service要求Provider提供一个额外得通道以便seeker寻求建立连接&#xff0c;连接建立后&#xff0c;Seeker就可以向Provider发送一串数据流&#xff0c;这样做的目的是为了支持GFPS Extension&#xff0c;也就是扩展的GFPS&#xff0c;主要涉及一…

Vue项目打包部署到服务器

1. Vue项目打包部署到服务器 1.1. 配置 &#xff08;1&#xff09;修改package.json文件同级目录下的vue.config.js文件。 // vue.config.js module.exports {publicPath: ./, }&#xff08;2&#xff09;检查router下的index.js文件下配置的mode模式。   检查如果模式改…

rk3588-ubuntu22.04系统网关实现路由器功能:

rk3588-ubuntu22.04系统网关实现路由器功能&#xff1a; 场景需求描述&#xff1a; 需求背景&#xff1a; 场景一&#xff1a;通过网线eth0/(路由器wlan0)访问外网&#xff1a; 如果网关 和 设备所处的环境可以通过网线联网或者路由器联网&#xff0c;那么不需要将网关配置成…

GIF制作工具推荐与详细使用教程

引言 GIF&#xff08;Graphics Interchange Format&#xff09;是一种广泛使用的图像格式&#xff0c;常用于创建动画或短视频片段。无论你是想制作表情包、动画教程还是简单的动画效果&#xff0c;选择一个合适的GIF制作工具是关键。下面我们将推荐几款免费且易用的GIF制作工…

打卡第十二天 P1012 [NOIP1998 提高组] 拼数

题目描述 设有 n 个正整数 &#xff0c;将它们联接成一排&#xff0c;相邻数字首尾相接&#xff0c;组成一个最大的整数。 输入格式 第一行有一个整数&#xff0c;表示数字个数 n。 第二行有 n 个整数&#xff0c;表示给出的 n 个整数 。 输出格式 一个正整数&#xff0c…

【每日刷题】Day169

【每日刷题】Day169 &#x1f955;个人主页&#xff1a;开敲&#x1f349; &#x1f525;所属专栏&#xff1a;每日刷题&#x1f34d; &#x1f33c;文章目录&#x1f33c; 1. 718. 最长重复子数组 - 力扣&#xff08;LeetCode&#xff09; 2. 2269. 找到一个数字的 K 美丽值…

SeaTunnel Web1.0.0安装

部署seatunnel2.3.8参考:部署seatunnel2.3.8-CSDN博客 SeaTunnel Web1.0.1对应的seatunnel2.3.3版本,所以如果要想在SeaTunnel Web1.0.1上能正常跑seatunnel对应版本包,在seatunnel上传的connector-开头的包,都得跟着SeaTunnel Web依赖的版本走,如安装了seatunnel2.3.7但…

AI大模型学习笔记|多目标算法梳理、举例

多目标算法学习内容推荐&#xff1a; 1.通俗易懂讲算法-多目标优化-NSGA-II(附代码讲解)_哔哩哔哩_bilibili 2.多目标优化 (python pyomo pareto 最优)_哔哩哔哩_bilibili 学习笔记&#xff1a; 通过网盘分享的文件&#xff1a;多目标算法学习笔记 链接: https://pan.baidu.com…

Go 语言与时间拳击理论下的结对编程:开启高效研发编程之旅

一、引言 结对编程作为一种软件开发方法&#xff0c;在提高代码质量、增强团队协作等方面具有显著优势。而时间拳击理论为结对编程带来了新的思考角度。本文将以 Go 语言为中心&#xff0c;深入探讨时间拳击理论下的结对编程。 在当今软件开发领域&#xff0c;高效的开发方法和…

基于Java的世界时区自动计算及时间生成方法

目录 前言 一、zoneinfo简介 1、zoneinfo是什么 2、zoneinfo有什么 二、在Java中进行时区转换 1、Java与zoneInfo 2、Java展示zoneInfo实例 3、Java获取时区ID 三、Java通过经纬度获取时区 1、通过经度求解偏移 2、通过偏移量计算时间 3、统一的处理算法 四、总结 …

PostgreSQL的学习心得和知识总结(一百六十四)|深入理解PostgreSQL数据库之在 libpq 中支持负载平衡

目录结构 注&#xff1a;提前言明 本文借鉴了以下博主、书籍或网站的内容&#xff0c;其列表如下&#xff1a; 1、参考书籍&#xff1a;《PostgreSQL数据库内核分析》 2、参考书籍&#xff1a;《数据库事务处理的艺术&#xff1a;事务管理与并发控制》 3、PostgreSQL数据库仓库…

BERT:用于语言理解的深度双向 Transformer 的预训练。

文章目录 0. 摘要1. 介绍2. 相关工作2.1 无监督的基于特征的方法2.3 无监督微调方法2.3 从受监督数据中迁移学习 3. BERT3.1 预训练 BERT3.2 微调 BERT 4. 实验4.1 GLUE4.2 SQuAD v1.14.3 SQuAD v2.04.4 SWAG 5. 消融研究5.1 预训练任务的影响5.2 模型大小的影响5.3 使用 BERT …

QT图形/视图架构详解(一)

场景、视图与图形项 图形/视图架构主要由 3 个部分组成&#xff0c;即场景、视图和图形项&#xff0c;三者的关系如图所示&#xff1a; 场景、视图和图形项的关系 场景&#xff08;QGraphicsScene 类&#xff09; 场景不是界面组件&#xff0c;它是不可见的。场景是一个抽象的…

Towards Frame Rate Agnostic Multi-object Tracking—迈向帧率无关的多目标跟踪

Towards Frame Rate Agnostic Multi-object Tracking—迈向帧率无关的多目标跟踪 发表在IJCV 2023年 作者&#xff1a;Weitao Feng, Lei Bai, Yongqiang Yao, Fengwei Yu & Wanli Ouyang 研究目标&#xff1a;多目标跟踪的帧率无关性研究 IJCV 在计算机视觉领域的影响力非常…

最新消息!ChatGPT已集成到苹果操作系统!

12月11日&#xff0c;OpenAI宣布ChatGPT将集成到苹果iOS、iPadOS和macOS操作系统中&#xff0c;用户可以直接在这些设备上访问ChatGPT的功能。 通过此次宣布内容来看&#xff0c;ChatGPT不再局限于单独的应用程序&#xff0c;用户可以在苹果设备上更便捷地使用它。这意味着&…