【业务功能篇81】微服务SpringCloud-ElasticSearch-Kibanan-docke安装-入门实战
ElasticSearch
一、ElasticSearch概述
1.ElasticSearch介绍
ES 是一个开源的高扩展的分布式全文搜索引擎,是整个Elastic Stack技术栈的核心。它可以近乎实时的存储,检索数据;本身扩展性很好,可以扩展到上百台服务器,处理PB级别的数据。
ElasticSearch的底层是开源库Lucene,但是你没办法直接用Lucene,必须自己写代码去调用它的接口,Elastic是Lucene的封装,提供了REST API的操作接口,开箱即用。天然的跨平台。
全文检索是我们在实际项目开发中最常见的需求了,而ElasticSearch是目前全文检索引擎的首选,它可以快速的存储,搜索和分析海量的数据,维基百科,GitHub,Stack Overflow都采用了ElasticSearch。
官方网站:https://www.elastic.co/cn/elasticsearch/
中文社区:https://elasticsearch.cn/explore/
2.ElasticSearch用途
- 搜索的数据对象是大量的非结构化的文本数据。
- 文件记录达到数十万或数百万个甚至更多。
- 支持大量基于交互式文本的查询。
- 需求非常灵活的全文搜索查询。
- 对高度相关的搜索结果的有特殊需求,但是没有可用的关系数据库可以满足。
- 对不同记录类型,非文本数据操作或安全事务处理的需求相对较少的情况。
3. ElasticSearch基本概念
3.1 索引
索引(indices)在这儿很容易和MySQL数据库中的索引产生混淆,其实是和MySQL数据库中的Databases数据库的概念是一致的。
3.2 类型
类型(Type),对应的其实就是数据库中的 Table(数据表),类型是模拟mysql中的table概念,一个索引库下可以有不同类型的索引,比如商品索引,订单索引,其数据格式不同。
3.3 文档
文档(Document),对应的就是具体数据行(Row)
3.4 字段
字段(field)相对于数据表中的列,也就是文档中的属性。
4. 倒排索引
Elasticsearch是通过Lucene的倒排索引技术实现比关系型数据库更快的过滤。特别是它对多条件的过滤支持非常好.
倒排索引是搜索引擎的核心。搜索引擎的主要目标是在查找发生搜索条件的文档时提供快速搜索。ES中的倒排索引其实就是 lucene 的倒排索引,区别于传统的正向索引,倒排索引会再存储数据时将关键词和数据进行关联,保存到倒排表中,然后查询时,将查询内容进行分词后在倒排表中进行查询,最后匹配数据即可。
具体拆解的案例
词 | 记录 |
---|---|
红海 | 1,2,3,4,5 |
行动 | 1,2,3 |
探索 | 2,5 |
特别 | 3,5 |
记录篇 | 4 |
特工 | 5 |
保存的对应的记录为
1-红海行动
2-探索红海行动
3-红海特别行动
4-红海记录篇
5-特工红海特别探索
分词:将整句分拆为单词
检索信息:
- 红海特工行动?
- 红海行动?
二、ElasticSearch相关安装
1.Elasticsearch安装
ElasticSearch安装就相当于安装MySQL数据库。
下载对应的镜像文件
docker pull elasticsearch:7.4.2
创建需要挂载的目录
mkdir -p /mydata/elasticsearch/config
mkdir -p /mydata/elasticsearch/data
echo “http.host : 0.0.0.0” >> /mydata/elasticsearch/config/elasticsearch.yml
安装ElasticSearch容器
docker run --name elasticsearch -p 9200:9200 -p 9300:9300 -e “discovery.type=single-node” -e ES_JAVA_OPTS=“-Xms64m -Xmx128m” -v /mydata/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml -v /mydata/elasticsearch/data:/usr/share/elasticsearch/data -v /mydata/elasticsearch/plugins:/usr/share/elasticsearch/plugins -d elasticsearch:7.4.2
启动异常:
elasticsearch.yml配置文件的 :
两边需要添加空格
还有就是访问的文件权限问题:
没有权限我们就添加权限就可以了
chmod -R 777 /mydata/elasticsearch/
然后我们就可以启动容器了
docker start 容器编号
然后测试访问:http://192.168.56.100:9200
看到这个效果表示安装成功!
2.Kibana安装
Kibana的安装就相当于安装MySQL的客户端SQLYog。
下载镜像文件
docker pull kibana:7.4.2
启动容器的命令
docker run --name kibana -e ELASTICSEARCH_HOSTS=http://192.168.56.100:9200 -p 5601:5601 -d kibana:7.4.2
测试访问:http://192.168.56.100:5601
如果查看日志:docker logs 容器编号
那么我们就手动的进入容器中修改ElasticSearch的服务地址
docker exec -it 容器编号 /bin/bash
进入config目录
cd config
修改kibana.yml文件中的ElasticSearch的服务地址
然后我们重启Kibana服务
看到如下界面表示安装启动成功
三、ElasticSearch入门
1._cat
_cat接口 | 说明 |
---|---|
GET /_cat/nodes | 查看所有节点 |
GET /_cat/health | 查看ES健康状况 |
GET /_cat/master | 查看主节点 |
GET /_cat/indices | 查看所有索引信息 |
/_cat/indices?v 查看所有的索引信息
es 中会默认提供上面的几个索引,表头的含义为:
字段名 | 含义说明 |
---|---|
health | green(集群完整) yellow(单点正常、集群不完整) red(单点不正常) |
status | 是否能使用 |
index | 索引名 |
uuid | 索引统一编号 |
pri | 主节点几个 |
rep | 从节点几个 |
docs.count | 文档数 |
docs.deleted | 文档被删了多少 |
store.size | 整体占空间大小 |
pri.store.size | 主节点占 |
2.索引操作
索引就相当于我们讲的关系型数据库MySQL中的 database
2.1 创建索引
PUT /索引名
参数可选:指定分片及副本,默认分片为3,副本为2。
{"settings": {"number_of_shards": 3,"number_of_replicas": 2}
}
2.2 查看索引信息
GET /索引名
或者,我们可以使用*来查询所有索引具体信息
2.3 删除索引
DELETE /索引名称
3.文档操作
文档相当于数据库中的表结构中的Row记录
3.1 创建文档
PUT /索引名称/类型名/编号
数据
{"name":"bobo"
}
提交方式 | 描述 |
---|---|
PUT | 提交的id如果不存在就是新增操作,如果存在就是更新操作,id不能为空 |
POST | 如果不提供id会自动生成一个id,如果id存在就更新,如果id不存在就新增 |
POST /索引名称/类型名/编号
3.2 查询文档
GET /索引/类型/id
返回字段的含义
字段 | 含义 |
---|---|
_index | 索引名称 |
_type | 类型名称 |
_id | 记录id |
_version | 版本号 |
_seq_no | 并发控制字段,每次更新都会+1,用来实现乐观锁 |
_primary_term | 同上,主分片重新分配,如重启,就会发生变化 |
found | 找到结果 |
_source | 真正的数据内容 |
乐观锁: ?if_seq_no=0&if_primary_term=1
3.3 更新文档
前面的POST和PUT添加数据的时候,如果id存在就会执行更新文档的操作,当然我们也可以通过POST方式提交,然后显示的跟上_update来实现更新
POST /索引/类型/id/_update
{"doc":{"name":"bobo666"}
}
这种方式来更新,只是这种方式的更新如果数据没有变化则不会操作。
如果更新的数据和文档中的数据是一样的,那么POST方式提交是不会有任何操作的
3.4 删除文档
DELETE /索引/类型/id
DELETE /索引
3.5 测试数据
_bulk批量操作,语法格式
{action:{metadata}}\n
{request body }\n
{action:{metadata}}\n
{request body }\n
案例
POST /bobo/system/_bulk
{"index":{"_id":"1"}}
{"name":"dpb"}
{"index":{"_id":"2"}}
{"name":"dpb2"}
复杂点的案例:
POST /_bulk
{"delete":{"_index":"website","_type":"blog","_id":"123"}}
{"create":{"_index":"website","_type":"blog","_id":"123"}}
{"title":"My first bolg post ..."}
{"index":{"_index":"website","_type":"blog"}}
{"title":"My second blog post ..."}
{"update":{"_index":"website","_type":"blog","_id":"123"}}
{"doc":{"title":"My updated blog post ..."}}
官方测试数据:https://github.com/elastic/elasticsearch/blob/master/docs/src/test/resources/accounts.json
相关文章:
【业务功能篇81】微服务SpringCloud-ElasticSearch-Kibanan-docke安装-入门实战
ElasticSearch 一、ElasticSearch概述 1.ElasticSearch介绍 ES 是一个开源的高扩展的分布式全文搜索引擎,是整个Elastic Stack技术栈的核心。它可以近乎实时的存储,检索数据;本身扩展性很好,可以扩展到上百台服务器,…...
【UniApp开发小程序】私聊功能uniapp界面实现 (买家、卖家 沟通商品信息)【后端基于若依管理系统开发】
文章目录 效果显示WebSocket连接使用全局变量WebSocket连接细节 最近和自己聊天的用户信息界面效果界面代码最近的聊天内容太长日期时间显示未读消息数量显示 私聊界面界面展示代码实现英文长串不换行问题聊天区域自动滑动到底部键盘呼出,聊天区域收缩,聊…...
【BASH】回顾与知识点梳理(三十六)
【BASH】回顾与知识点梳理 三十六 三十六. 认识与分析登录档36.1 什么是登录档CentOS 7 登录档简易说明登录档的重要性Linux 常见的登录档档名登录档所需相关服务 (daemon) 与程序CentOS 7.x 使用 systemd 提供的 journalctl 日志管理 登录档内容的一般格式 36.2 rsyslog.servi…...
十三、pikachu之暴力破解
文章目录 1、暴力破解概述2、基于表单的暴力破解3、验证码的绕过3.1 验证码的认证流程3.2 验证码绕过(on client)3.3 验证码绕过(on server)3.4 token防爆破? 1、暴力破解概述 “暴力破解”是一攻击具手段,…...
用手势操控现实:OpenCV 音量控制与 AI 换脸技术解析
基于opencv的手势控制音量和ai换脸 HandTrackingModule.py import cv2 import mediapipe as mp import timeclass handDetector():def __init__(self, mode False, maxHands 2, model_complexity 1, detectionCon 0.5, trackCon 0.5):self.mode modeself.maxHands max…...
【leetcode 力扣刷题】移除链表元素 多种解法
移除链表元素的多种解法 203. 移除链表元素解法①:头节点单独判断解法②:虚拟头节点解法③:递归 203. 移除链表元素 题目链接:203.移除链表元素 题目内容: 理解题意:就是单纯的删除链表中所有值等于给定的…...
leetcode503. 下一个更大元素 II 单调栈
思路: 与之前 739、1475 单调栈的问题如出一辙,唯一不同的地方就是对于遍历完之后。栈中元素的处理,之前的栈中元素因无法找到符合条件的值,直接加入vector中。而这里需要再重头遍历一下数组,找是否有符合条件的&…...
Oracle中列的维护
由于商业环境中,数据是不断变化的,客户的需求也是不断变化的,所以当一个表用了一段时间后,其结构就有可能需要变化。 而在Oracle中,提供了alter table这种方式来改变列。 从Oracle9.2版本之后: 如果需要变…...
后端项目开发:分页功能的实现(Mybatis+pagehelper)
分页查询是项目中的常用功能,此处我们基于Mybatis对分页查询进行处理。 引入分页依赖 <!-- pagehelper --> <dependency><groupId>com.github.pagehelper</groupId><artifactId>pagehelper-spring-boot-starter</artifactId>…...
SpringBoot集成Drools
一:简介 规则引擎全称为业务规则管理系统(Business Rule Management System)简称BRMS,主要思想是将应用程序中的业务决策部分分离开来,并使用预定义的语义模块编写业务决策(业务规则),由用户或开发者在需要时进行配置、管理。 其实就是将计算逻辑写在脚本中,通过Jav…...
React创建组件的三种方式及其区别是什么?
在React中,创建组件的三种主要方式是函数式组件、类组件和使用React Hooks的函数式组件。以下是对每种方式的详细解释以及它们之间的区别: 1、函数式组件: 函数式组件是使用纯粹的JavaScript函数来定义的。它接收一个props对象作为参数&…...
W6100-EVB-PICO进行UDP组播数据回环测试(九)
前言 上一章我们用我们的开发板作为UDP客户端连接服务器进行数据回环测试,那么本章我们进行UDP组播数据回环测试。 什么是UDP组播? 组播是主机间一对多的通讯模式, 组播是一种允许一个或多个组播源发送同一报文到多个接收者的技术。组播源将…...
Qt 阴影边框
阴影边框很常见,诸如360以及其他很多软件都有类似效果,了解CSS3的同学们应该都知道box-shadow,它就是来设定阴影效果的,那么Qt呢?看过一些资料,说是QSS是基于CSS2的,既然如此,box-sh…...
前端面试:【性能优化】页面加载性能、渲染性能、资源优化
嗨,亲爱的前端开发者!在今天的Web世界中,用户期望页面加载速度快、交互流畅。因此,前端性能优化成为了至关重要的任务。本文将探讨三个关键方面的性能优化:页面加载性能、渲染性能以及资源优化,以帮助你构建…...
从按下电源键到进入系统,CPU在干什么?
本专栏更新速度较慢,简单讲讲计算机的那些事,简单讲讲那些特别散乱杂的知识,欢迎各位朋友订阅专栏啊 感谢一路相伴的朋友们 浅淡操作系统系列第2篇 目录 通电 保护模式和实模式 内存管理单元MMU 逻辑地址?物理地址࿱…...
TypeScript初体验
1.安装编译TS工具包 npm i -g typescript 2. 查看版本号 tsc -v 3.创建ts文件 说明:创建一个index.ts文件 4.TS编译为JS tsc index.ts 5.执行JS代码 node index.js 6.简化TS的步骤 6.1安装 npm i -g ts-node 6.2执行 ts-node index.ts...
基于 Alpine 环境源码构建 alibaba-tengine(阿里巴巴)的 Docker 镜像
About Alpine(简介) Alpine Linux 是一款极其轻量级的 Linux 发行版,基于 busybox,多被当做 Docker 镜像的底包(基础镜像),在使用容器时或多或少都会接触到此系统,本篇文章我们以该镜…...
政府网站定期巡检:构建高效、安全与透明的数字政务
在数字时代,政府网站已不仅仅是一个信息发布窗口,更是政府与公众互动的桥梁、政务服务的主要渠道以及数字化治理的重要平台。因此,确保政府网站的高效运行、信息安全与透明公开就显得尤为重要。在此背景下,定期的网站巡检与巡查成…...
C++信息学奥赛1138:将字符串中的小写字母转换成大写字母
#include<bits/stdc.h> using namespace std; int main() {string arr;// 输入一行字符串getline(cin, arr);for(int i0;i<arr.length();i){if(arr[i]>97 and arr[i]<122){char aarr[i]-32; // 将小写字母转换为大写字母cout<<a; // 输出转换后的字符}els…...
leetcode1475. 商品折扣后的最终价格 【单调栈】
简单题 第一次错误做法 class Solution { public:vector<int> finalPrices(vector<int>& prices) {int n prices.size();stack<int> st;unordered_map<int, int> mp;int i 0;while(i ! prices.size()) {int t prices[i];if (st.empty() || t …...
macOS M1使用TensorFlow GPU加速
本人是在pycharm运行代码,安装了tensorflow版本2.13.0 先运行代码查看有没有使用GPU加速: import tensorflow as tf# Press the green button in the gutter to run the script. if __name__ __main__:physical_devices tf.config.list_physical_dev…...
GNU-gcc编译选项-1
include目录 -I ,比如: -I. -I ./Platform/include -I ./Platform/include/prototypes -I ./tpm/include -I ./tpm/include/prototypes -I ./Simulator/include -I ./Simulator/include/prototypes 编译选项 在GCC编译器中,-D是一个编译选项&…...
【DEVOPS】Jenkins使用问题 - 控制台输出乱码
0. 目录 1. 问题描述2. 解决方案3. 最终效果4. 总结 1. 问题描述 部门内部对于Jenkins的使用采取的是Master Slave Work Node的方式,即作为Master节点的Jenkins只负责任务调度,具体的操作由对应的Slave Work Node去执行。 最近团队成员反馈一个问题&a…...
logback-spring.xml
<?xml version"1.0" encoding"UTF-8"?> <configuration> <appender name"stdout" class"ch.qos.logback.core.ConsoleAppender"> <encoder> <springProfile name"dev"> <pattern>%d{…...
华为OD机试之报文重排序【Java源码】
题目描述 对报文进行重传和重排序是常用的可靠性机制,重传缓中区内有一定数量的子报文,每个子报文在原始报文中的顺序已知,现在需要恢复出原始报文。 输入描述 输入第一行为N,表示子报文的个数,0 <N ≤ …...
回归预测 | MATLAB实现BES-ELM秃鹰搜索优化算法优化极限学习机多输入单输出回归预测(多指标,多图)
回归预测 | MATLAB实现BES-ELM秃鹰搜索优化算法优化极限学习机多输入单输出回归预测(多指标,多图) 目录 回归预测 | MATLAB实现BES-ELM秃鹰搜索优化算法优化极限学习机多输入单输出回归预测(多指标,多图)效…...
DPU在东数西算背景下如何赋能下一代算力基础设施 中科驭数在未来网络发展大会论道
以ChatGPT为代表的人工智能大模型的快速发展,对网络信息技术创新发展提出了新的挑战,我国东数西算重大工程也在加速布局。以确定性网络、算力网络为代表的未来网络核心技术,正成为决定未来经济和产业发展的关键。 8月23日,第七届…...
2021年12月 C/C++(四级)真题解析#中国电子学会#全国青少年软件编程等级考试
第1题:移动路线 桌子上有一个m行n列的方格矩阵,将每个方格用坐标表示,行坐标从下到上依次递增,列坐标从左至右依次递增,左下角方格的坐标为(1,1),则右上角方格的坐标为(m,n)。 小明是个调皮的孩子,一天他捉来一只蚂蚁,不小心把蚂蚁的右脚弄伤了,于是蚂蚁只能向上或向右…...
ArcGIS Serve Windows下用户密码变更导致Server服务无法启动问题
问题: 因未知原因Windows下的Server安装账户密码变更,但是又忘记了密码,导致,Server服务启动失败,错误1069: 解决方法: 在账户管理界面,重置对应的arcgis账户的密码,…...
React 面试题集锦
目录 如果想要在组件第一次加载后获取该组件的dom元素,应当在以下哪个生命周期中进行 React支持的键盘事件是 使用严格模式(Strict Mode)优点 React 动态引入组件 当使用ReactDOM.unmountComponentAtNode从DOM中卸载组件时 说一下useS…...
南京网站房地产/国外搜索引擎入口
有些人说,我零基础,应该怎么学习?经过大半年的更新,大家细看里面的教程,基本都可以找到答案这里汇总了一份视频跟图文的教程,定期更新,所以大家收藏好学摄影,找的是合适的老师&#…...
有哪些网站可以找兼职做/常见的系统优化软件
LR中检查点有两种:图片和文字。这两种检查点可用以下三个函数实现:web_find()、web_reg_find()和web_image_check() 下面分别介绍三种函数的用法 1.web_find()函数 函数作用:在页面中查找相应的内容 参数举例:web_find("…...
焦作网站建设哪家公司好/宁德市人民医院
一、基本概念 1 比特率:表示经过编码(压缩)后的音频数据每秒钟需要用多少个比特来表示,单位常为kbps。 2 响度和强度:声音的主观属性响度表示的是一个声音听来有多响的程度。响度主要随声音的强度而变化,…...
网站后台如何添加代码/国外网站如何搭建网页
网站视频存放服务器 内容精选换一换简要介绍Web Bench是Linux中被广泛使用的网站压力测试工具,同时支持HTTPS静态网站和动态网站。编写语言:C/C一句话概述:网站压力测试工具建议的版本建议使用版本为1.5。云服务器要求本文以云服务器KC1实例测…...
临安做企业网站的公司/网络营销策划书的结构
今天把博客程序部署到一台阿里云Windows主机上,通过浏览器访问时出现下面的错误: 创建 BlogConfigurationSettings 的配置节处理程序时出错: 拒绝访问临时目录。以其运行 XmlSerializer 的身份“IIS APPPOOL\www.cnblogs.com”没有足够的权限访问临时目录…...
网站建设公司汕头的/短视频优化
继承的两个抽象类里面的两个抽象方法如下:public abstract class Capacity{public abstract int passengerCapacity(int e[], int d);public abstract int carryingCapacity(int s[], int b);}主类调用并实现功能:import java.util.Scanner;public class…...