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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Qt之将源代码封装成库文件使用(五)

Qt开发 系列文章 - Code-To-Library&#xff08;五&#xff09; 目录 前言 一、库文件 二、直接封装方式 1.静态库封装 2.动态库封装 3.其它库类型 三、二次重写封装 四、库的使用 1.移植库及头文件 2.添加外部库 总结 前言 库文件是计算机上的一类文件&#xff0c…

Qt 联合Halcon视觉框架(1)

文章目录 效果QHalconWind 类回调函数刷新窗口构造函数保证窗口大小和Halcon 窗口大小一致绘制图片获取坐标点设置坐标点鼠标拖动图片鼠标按下鼠标抬起鼠标双击滚轮放大缩小图片 效果 QHalconWind 类 // HALCON/Qt pattern matching and measure example // // (c) 2004-2017 …

AI大模型学习笔记|人工智能的发展历程、智能体的发展、机器学习与深度学习的基本理论

学习链接&#xff1a;冒死上传&#xff01;价值2W的大模型入门到就业教程分享给大家&#xff01;轻松打造专属大模型助手&#xff0c;—多模态、Agent、LangChain、ViT、NLP_哔哩哔哩_bilibili 百度网盘自己整理的笔记&#xff1a; 通过网盘分享的文件&#xff1a;1-人工智能的…

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模式。   检查如果模式改…

docker的网络类型和使用方式

docker的网络类型 5种网络类型 bridge 默认类型&#xff0c;桥接到宿主机docker0的网络&#xff0c;有点类似于VM虚拟机的NAT网络模型。 案例: docker run --rm -itd --network bridge --name wzy666wzy-bridge alpine host host类型&#xff0c;共享宿主机的网络空间&#…

数字IC后端实现常见的physical only cell都有哪些?如何添加这些cell?

数字IC后端实现阶段常见功能cell有哪些&#xff1f;比如AND&#xff0c;AOI&#xff0c;NAND等。 physical cell有哪些&#xff1f;都是干什么用的&#xff1f; 数字后端零基础入门系列 | Innovus零基础LAB学习Day9 &#xff08;1&#xff09; well tap cells&#xff1a;防止…

c++中类的应用综合练习

整理思维导图 课上类实现> 、<、!、||、&#xff01;和后自增、前自减、后自减运算符的重载 代码部分&#xff1a; #include <iostream> using namespace std; class complex {int rel;int vir; public:complex(int rel,int vir):rel(rel),vir(vir){}complex(){}…

ElasticSearch 搜索、排序、分页功能

一、DSL 查询文档 ElasticSearch 的查询依然是基于 json 风格的 DSL 来实现的。 官方文档&#xff1a;https://www.elastic.co/guide/en/elasticsearch/reference/8.15/query-dsl.html 1.1 DSL 查询分类 常见的查询类型包括&#xff1a; 查询所有&#xff1a;查询出所有数…

mybatis常见错误

1.没有在mybatis.xml里面引入映射文件 2. 连接数据库部分有误 3.控制台输出无误&#xff0c;数据库里只插入了id sql语句有误 正确 <insert id"add" useGeneratedKeys"true" keyProperty"id">insert into t_teacher values (null,#{nam…

GLM-4-Plus初体验

引言&#xff1a;为什么高效的内容创作如此重要&#xff1f; 在当前竞争激烈的市场环境中&#xff0c;内容创作已成为品牌成功的重要支柱。无论是撰写营销文案、博客文章、社交媒体帖子&#xff0c;还是制作广告&#xff0c;优质的内容不仅能够帮助品牌吸引目标受众的注意力&a…

Mac/Windows端长期破解myBase8方法(无需安装火绒)

提醒 不管哪个端&#xff0c;都需要先退出myBase。 Mac 进入用户根目录/Users/c0ny100&#xff0c;即下边是Macintosh HD > 用户 > [你的用户名]这个界面然后按ShiftCommond.&#xff0c;显示隐藏文件。找到.Mybase8.ini文件 打开.Mybase8.ini文件&#xff0c;删除Fir…

Capture绘制元器件(Candance 17.4)

step1&#xff1a;新建元器件库 step2&#xff1a;新建元器件 step3&#xff1a;新建元器件,填写元器件名称以及类型 step4&#xff1a;绘制元器件形状 step5&#xff1a;添加引脚 添加引脚名称以及序号 将GND、VIN等电源属性引脚从Passive改为Power&#xff0c;其余为Passive …

支持自定义离线地图地理区域,查询组件及数据源功能增强,DataEase开源BI工具v2.10.3 LTS发布

2024年12月9日&#xff0c;人人可用的开源BI工具DataEase正式发布v2.10.3 LTS版本。 这一版本的功能变动包括&#xff1a;数据源方面&#xff0c;API数据源和Excel数据源支持对字段类型和长度进行设置&#xff1b;图表方面&#xff0c;离线类地图支持自定义地理区域设置&#…

【Unity学习笔记·第十二】Unity New Input System 及其系统结构和源码浅析

转载请注明出处&#xff1a;&#x1f517;https://blog.csdn.net/weixin_44013533/article/details/132534422 作者&#xff1a;CSDN|Ringleader| 主要参考&#xff1a; 官方文档&#xff1a;Unity官方Input System手册与API官方测试用例&#xff1a;Unity-Technologies/InputS…

STM32F103单片机HAL库串口通信卡死问题解决方法

在上篇文章 STM32F103单片机使用STM32CubeMX创建IAR串口工程 中分享了使用cubeMX直接生成串口代码的方法&#xff0c;在测试的过程中无意间发现&#xff0c;串口会出现卡死的问题。 当串口一次性发送十几个数据的时候&#xff0c;串口感觉像卡死了一样&#xff0c;不再接收数据…

【指南】03 CSC联系外导

确定外导 课题组有合作关系的国外导师与自己研究方向密切相关的国外导师国外高校官网、谷歌学术、Research Gate等平台检索不可以是中国港澳台的高校科研院所或机构注意外导所在高校排名和科研水平可列表记录注意外国签证政策 发送邮件 自我介绍简要介绍CSC介绍自己的研究对…

umi实现动态获取菜单权限

文章目录 前景登录组件编写登录逻辑菜单的时机动态路由页面刷新手动修改地址 前景 不同用户拥有不同的菜单权限&#xff0c;现在我们实现登录动态获取权限菜单。 登录组件编写 //当我们需要使用dva的dispatch函数时&#xff0c;除了通过connect函数包裹组件还可以使用这种方…

swagger-codegen

一、通过Swagger生成客户端代码 下载&#xff1a;https://github.com/swagger-api/swagger-codegen#编译打包 cd E:\软件空间\代码生成\swagger-codegen-3.0.64 mvn clean package#指定swagger地址生成客户端代码 cd E:\软件空间\代码生成\swagger-codegen-3.0.64\modules\swa…

Kael‘thas Sunstrider Ashes of Al‘ar

Kaelthas Sunstrider 凯尔萨斯逐日者 <血精灵之王> Kaelthas Sunstrider - NPC - 魔兽世界怀旧服TBC数据库_WOW2.43数据库_70级《燃烧的远征》数据库 Ashes of Alar 奥的灰烬 &#xff08;凤凰 310%速度&#xff09; Ashes of Alar - Item - 魔兽世界怀旧服TBC数据…

7.Vue------$refs与$el详解 ------vue知识积累

$refs 与 $el是什么&#xff1f; 作用是什么? ref&#xff0c;$refs&#xff0c;$el &#xff0c;三者之间的关系是什么&#xff1f; ref (给元素或者子组件注册引用信息) 就像你要给元素设置样式&#xff0c;就需要先给元素设定一个 class 一样&#xff0c;同理&#xff0c;…