01.Elasticsearch应用(一)

Elasticsearch应用(一)

1.什么是ELK

ELK是一个免费开源的日志分析架构技术栈总称,包含三大基础组件,分别是Elasticsearch、Logstash、Kibana。但实际上ELK不仅仅适用于日志分析,它还可以支持其它任何数据搜索、分析和收集的场景,日志分析和收集只是更具有代表性。并非唯一性

2.什么是Elastic Stack

介绍

Elastic Stack是由ELK演化而来,在发展的过程中,又有新成员Beats与Elastic Cloud的加入,形成了Elastic Stack,所以说,ELK是旧的称呼,Elastic Stack是新的名字
在这里插入图片描述

在这里插入图片描述
https://img-blog.csdnimg.cn/20200605203832785.jpg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQxMTA2ODQ0,size_16,color_FFFFFF,t_70#pic_center

Elasticsearch

Elasticsearch是使用Java开发,基于Lucene、分布式、通过Restful方式进行交互的近实时搜索平台框架。它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等

Logstash

Logstash 基于Java开发,是一个数据抽取转化工具。一般工作方式为c/s架构,client端安装在需要收集信息的主机上,server端负责将收到的各节点日志进行过滤、修改等操作在一并发往Elasticsearch或其他组件上去

Kibana

Kibana基于nodejs,也是一个开源和免费的可视化工具。Kibana可以为Logstash和ElasticSearch提供的日志分析友好的Web界面,可以汇总、分析和搜索重要数据日志

Beats

Beats平台集合了多种单一用途数据采集器。它们从成百上千或成千上万台机器和系统向Logstash或Elasticsearch发送数据

Elastic cloud

基于Elasticsearch的软件即服务(SaaS)解决方案。通过Elastic 的官方合作伙伴使用托管的Elasticsearch服务

3.搜索基础知识

数据分类

  • 结构化数据:固定格式,有限长度,比如MySQL存储的数据
  • 非结构化数据:不定长,无固定格式,比如邮件,word文档,日志
  • 半结构化数据:前两者结合,比如XML,HTML

搜索分类

  • 结构化数据搜索:使用关系型数据库
  • 非结构化数据搜索:顺序扫描,全文检索

全文检索

全文检索就是检索非结构化数据的方式,全文检索通过倒排索引加快搜索效率

通过一个程序扫描文本里的每一个单词,针对单词建立索引,并保存该单词在文本中的位置,以及出现的次数

用户查询时,通过之前建立好的索引来查询,将索引中单词对应的文本位置,出现的次数返回给用户,因为有了具体文本的位置,所以就可以将具体内容读取出来了

倒排索引

倒排索引。数据存储时,经行分词建立term索引库

倒排索引源于实际应用中需要根据属性的值来查找记录。这种索引表中的每一项都包括一个属性值和具有该属性值的各记录的地址。由于不是由记录来确定属性值,而是由属性值来确定记录的位置,因而称为倒排索引(inverted index)。带有倒排索引的文件我们称为倒排索引文件,简称倒排文件(inverted file)

简单理解:索引就类似于目录,平时我们使用的都是索引,都是通过主键定位到某条数据,那么倒排索引呢,刚好相反,数据对应到主键

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

4.什么是Lucene

在这里插入图片描述

5.搜索引擎技术排名

在这里插入图片描述

6.Elasticsearch初识

介绍

在这里插入图片描述

起源

起源:Shay Banon。2004年失业,陪老婆去伦敦学习厨师。失业在家帮老婆写一个菜谱搜索引擎。封装了Lucene的开源项目,compass。找到工作后,做分布式高性能项目,再封装compass,写出了Elasticsearch,使得Lucene支持分布式。现在是Elasticsearch创始人兼Elastic首席执行官

ES版本特性

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

应用场景

  • 站内搜索
  • 日志管理与分析
  • 大数据分析
  • 应用性能监控
  • 机器学习

特点

  1. 可拓展性: 大型分布式集群(数百台服务器)技术,处理PB级数据,大公司可以使用。小公司数据量小,也可以部署在单机。大数据领域使用广泛
  2. 部署简单: 开箱即用,很多默认配置不需关心,解压完成直接运行即可。拓展时,只需多部署几个实例即可,负载均衡、分片迁移集群内部自己实施
  3. 接口简单: 使用Restful api经行交互,跨语言
  4. 功能强大: Elasticsearch作为传统数据库的一个补充,提供了数据库所不不能提供的很多功能,如全文检索,同义词处理,相关度排名

ES VS Solr

  • Solr利用Zookeeper进行分布式管理,而ES自身带有分布式协调功能
  • Solr支持更多格式的数据,比如JSON,XML,CSV,而ES支持JSON
  • Solr在传统的搜索应用中表现好于ES,但在处理实时搜索应用时效率明显低于ES
  • Solr是传统搜索应用的有力解决方案,但ES更适用于新兴的实时搜索应用

7.单机部署

链接

  • Linux或MacOS上安装ES:https://www.elastic.co/guide/en/elasticsearch/reference/7.7/targz.html
  • Windows安装ES:https://www.elastic.co/guide/en/elasticsearch/reference/7.7/zip-windows.html
  • Docker安装ES:https://www.elastic.co/guide/en/elasticsearch/reference/7.7/docker.html
  • RPM安装ES:https://www.elastic.co/guide/en/elasticsearch/reference/7.7/rpm.html
  • Debian软件包安装ES:https://www.elastic.co/guide/en/elasticsearch/reference/7.7/deb.html#deb
  • ES官方下载地址:https://www.elastic.co/cn/downloads/past-releases#elasticsearch

各个版本ES对Java的依赖

  • 参考地址: https://www.elastic.co/cn/support/matrix
  • ES5:需要Java8以上的版本
  • ES6.5:开始支持Java11
  • ES7:内置了Java环境

注意

ES比较耗内存,建议虚拟机4G或以上内存,JVM1g以上的内存分配

elasticsearch-env.bat

在这里插入图片描述

目录介绍

在这里插入图片描述

安装方式总览

  • Windows安装
  • Centos7安装
  • docker-compose安装

Centos7安装

准备工作
root账号问题

ES不允许使用root账号启动服务,如果你当前账号是root,则需要创建一个专有账户

adduser es
passwd es
chown ‐R es:es
防火墙设置
# 关闭防火墙
systemctl stop firewalld.service
# 禁止开机自动启动防火墙
systemctl disable firewalld.service
调大系统的虚拟内存

可能出现这个错误:max virtual memory areas vm.max_map_count [65530] is too low, increase to at
least [262144]

# 打开系统文件
vi /etc/sysctl.conf
# 添加配置 262144 也可以
vm.max_map_count=262144
# 保存退出之后执行如下命令
sysctl -p
调整文件限制

可能出现这个错误:max file descriptors [4096] for elasticsearch process is too low, increase to at
least [65536]

ES因为需要大量的创建索引文件,需要大量的打开系统的文件,所以我们需要解除linux系统当中打开文件最大数目的限制,不然ES启动就会抛错

#切换到root用户
vim /etc/security/limits.conf# 末尾添加如下配置:
soft nofile 65536
hard nofile 65536
soft nproc 4096
hard nproc 4096
调整线程大小

可能出现的错误:max number of threads [1024] for user [es] is too low, increase to at least [4096]

无法创建本地线程问题,用户最大可创建线程数太小

vim /etc/security/limits.d/20‐nproc.conf# 改为如下配置:
soft nproc 4096
缺少默认配置

可能出现的错误:the default discovery settings are unsuitable for production use; at least one of
[discovery.seed_hosts, discovery.seed_providers, cluster.initial_master_nodes] must
be configured

缺少默认配置,至少需要配置
discovery.seed_hosts/discovery.seed_providers/cluster.initial_master_nodes中的一个
参数

vim config/elasticsearch.yml
#添加配置
discovery.seed_hosts: ["127.0.0.1"]
cluster.initial_master_nodes: ["node‐1"]#或者 单节点(集群单节点)
discovery.type: node‐single
安装
# 解压
tar -zxvf xxx.gz
# 重命名目录
mv xxx xxx
# 移动目录
mv xxx /usr/local/
# ES用户取得该文件夹权限
chown -R es:es /usr/local/es目录
# 切换为es用户
su es
# 进入ES安装文件夹的可执行文件目录
cd /usr/local/xxx/bin
# 启动ES服务 -d是后台运行
./elasticsearch - d - p pid  
# 检查是否启动成功
curl 127.0.0.1:9200
# 关闭ES
pkill -F pid

Windows安装

注意

需要依赖JDK11(8版本会有警告)以上版本,安装的是7.6.2版本

jvm.options配置
-Xms2g
-Xmx2g
elasticsearch.yml

添加跨域的支持,不加也可以启动,只不过方面后面一个东西的连接

http.cors.enabled: true
http.cors.allow-origin: ”*“

Docker-Compose安装

docker-compose.yml文件
version: '3.0'
services:es:image: elasticsearch:7.6.2 container_name: esenvironment:- ES_JAVA_OPTS=-Xms512m -Xmx512m # ES最大最小内存- discovery.type=single-node # 单点模式volumes:- ./es:/usr/share/elasticsearch # ES的目录ports:- 9200:9200 # ES访问端口- 9300:9300 # ES集群节点之间的通信端口
启动

启动bin目录下的elasticsearch.bat

测试以上方式是否安装成功

访问如下地址,ip看情况更换

http://localhost:9200

8.elasticsearch.yml文件详解

# Cluster模块
cluster.name: my-application   # 集群名称,多个节点如果要组成同一个集群,那么集群名称一定要配置相同的。默认值elasticsearch
cluster.initial_master_nodes: ["node-1","node-2"]   # 哪些节点可以参与选举,也就是候选主节点,默认为空,必须与node.name配置的一致
# Node模块
node.name: node-1             # 设置当前节点名称,默认主机名
node.master: false            # 使其有资格被选为控制群集的主节点
node.data: false              # 数据节点保存数据并执行与数据相关的操作,例如CRUD,搜索和聚合。# Paths模块
path.data: /path/to/data       # 设置存储数据的目录
path.logs: /path/to/logs       # 设置存储日志的目录# Memory模块
bootstrap.memory_lock: true    # 配置ES启动时是否进行内存锁定检查,默认为true,如果无法锁定会启动失败
# Network模块
network.host: 192.168.0.1      # 能够访问当前节点的注解,绑定地址改为0.0.0.0就是都可以连接
http.port: 9200                # ES当前节点对外提供服务的端口号# Discovery模块 
discovery.type: single-node    # 指定Elasticsearch是否应形成多节点集群。默认情况下,Elasticsearch在形成集群时会发现其他节点,并允许其他节点稍后加入集群。如果discovery.type被设置为single-node,Elasticsearch形成单个节点群集,并且抑制由设置超时 cluster.publish.timeout和cluster.join.timeout
discovery.seed_hosts: ["node-1","node-2"] # 提供群集中符合主机资格的节点的地址列表(所有节点的地址)。也可以是包含用逗号分隔的地址的单个字符串。每个地址的格式为host:port或host
discovery.cluster_formation_warning_timeout: 10s    # 设置节点在记录未形成集群的警告之前将尝试形成集群的时间。默认为10s。如果discovery.cluster_formation_warning_timeout经过一段时间后仍未形成集群,则该节点将记录一条警告消息,该警告消息以master not## http模块
http.cors.enabled: true     #是否开启跨域
http.cors.allow-origin: "*" #允许的原站点

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

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

相关文章

nodejs学习计划--(六)包管理工具

包管理工具 1. 介绍 包是什么 『包』英文单词是 package ,代表了一组特定功能的源码集合包管理工具 管理『包』的应用软件,可以对「包」进行 下载安装 , 更新 , 删除 , 上传 等操作 借助包管理工具,可以快…

【若依】前后端分离框架部署

1.拉取若依项目代码 进入若依 基于SpringBootVue前后端分离的Java快速开发框架,并通过相应协议拉取到本地IDE 2.前端部署 2.1.下载nodejs 进入nodejs官网下载所需版本, 完成后在命令行运行npm -v可查询版本 2.2.配置依赖 在若依ui目录下运行 np…

oracle古法unwrap手艺(oracle存储过程解码)

先说骚话 首先oracle官方是不支持解包的,见Doc ID 376303.1 但是需求来了。我就寄希望于民间大神的工具。很顺利,找到了几个,甚至还有网页版,以为是个easy money。 但是,我点背,总是能遇到精彩的情况。数…

Android开发--状态栏布局隐藏的方法

1.问题如下,安卓布局很不协调 2.先将ActionBar设置为NoActionBar 先打开styles.xml 3.使用工具类 package com.afison.newfault.utils;import android.annotation.TargetApi; import android.app.Activity; import android.content.Context; import android.graph…

【Elasticsearch篇】详解使用RestClient操作索引库的相关操作

文章目录 🍔什么是Elasticsearch🌺什么是RestClient🎆代码操作⭐初始化RestClient⭐使用RestClient操作索引库⭐使用RestClient删除索引库⭐使用RestClient判断索引库是否存在 🍔什么是Elasticsearch Elasticsearch是一个开源的分…

SpringBoot 统计更多Api接口SQL相关日志信息

统计(查询,更新,批量更新)SQL执行次数及用时并输出log import com.zhangziwa.practisesvr.utils.log.LogContext; import org.apache.ibatis.executor.statement.StatementHandler; import org.apache.ibatis.plugin.Interceptor; import org.apache.ibatis.plugin.Intercepts…

什么是通配监听端口? 什么是通配监听IP?

什么是通配监听端口? 监听端口: 指的是服务器或服务开启的特定TCP或UDP端口号,等待客户端连接或发送数据。TCP/IP协议下每个端口只能由一个服务独占监听,一个服务或应用会指定监听特定的一个或多个端口来接收客户端的连接请求。 例如 Web…

RocketMQ-Windows版本安装

RocketMQ-Windows版本安装 1.环境准备 JDK和maven需要先安装好,我这里使用的JDK1.8版本 Maven 3.8.6版本。需要注意的是,这里配置java时需要指定JAVA_HOME环境变量 RokectMQ才能正常启动。 2.下载RocketMQ 官网下载: https://rocketmq.apache.org/z…

C++读取txt文件中的逐个字符

为了增加读取的灵活性,所以separator和filename都设置为在主函数中获取输入或者在函数中传参的视线方法 举个例子,txt文件如下: household;2;true; 首先声明一个读取数据的文件 void read_data_file(const string& filename,char se…

Matplotlib Mastery: 从基础到高级的数据可视化指南【第30篇—python:数据可视化】

文章目录 Matplotlib: 强大的数据可视化工具1. 基础1.1 安装Matplotlib1.2 创建第一个简单的图表1.3 图表的基本组件:标题、轴标签、图例 2. 常见图表类型2.1 折线图2.2 散点图2.3 条形图2.4 直方图 3. 图表样式与定制3.1 颜色、线型、标记的定制3.2 背景样式与颜色…

CC工具箱使用指南:【属性映射】

一、简介 在规划工作中,经常会遇到这样一种情况,有一组一一对应的值。 比如用地编码和用地名称,用地编码【0101】和用地名称【水田】是对应的。 当你在用地编码字段输入【0101】时,用地名称值就必须为【水田】。 当我们确定用地…

gin路由篇

1. 基本路由 gin 框架中采用的路由库是基于httprouter做的 import ("net/http""github.com/gin-gonic/gin" )func main() {// 1.创建路由r : gin.Default()// 2.绑定路由规则,执行的函数// gin.Context,封装了request和responser.…

Nacos源码下载与运行

早先在linux环境下搭建过nacos环境 即Centos安装部署nacos实战,本次是从官网上下载源码,本地运行看看,记录过程,方便备查。 第一步、Nacos源码下载 推荐到nacos官网下载 Github地址,本次选择最新版,1.4.7…

查看Pytorch的GPU是否可用

查看Pytorch的GPU是否可用 import torch torch.cuda.is_available()返回为True表示 Pytorch 的 GPU 可用,返回为False表示 Pytorch 的 GPU 不可用。 其余命令: # 查看cuda是否可用 torch.cuda.is_available() # 返回当前设备索引 torch.cuda.current_d…

Kubeadm安装单master多node节点K8S集群

kubeadm安装k8s1.25版本集群步骤 环境说明实验环境规划集群搭建规划 初始化安装k8s集群的实验环境安装虚拟机更新yum源和操作系统配置机器主机名配置主机hosts文件,相互之间通过主机名互相访问配置主机之间无密码登录关闭交换分区swap,提升性能修改机器内…

Excel导出警告:文件格式和拓展名不匹配

原因描述: Content-Type 原因:Content-Type,即内容类型,一般是指网页中存在的Content-Type,用于定义网络文件的类型和网页的编码,决定文件接收方将以什么形式、什么编码读取这个文件,这就是经常…

Qt单选按钮

前言 本篇文章介绍Qt的单选按钮,就是QRadioButton QRadioButton是一个选项按钮,可以打开(选中)或关闭(取消选中)。单选按钮通常向用户提供“众多之一”的选择。 在一组单选按钮中,一次只能选中…

QT 实现自动生成小学两位数加减法算式

小学生加减法训练 QT实现–自动生成两位数加减法算式,并输出txt文件 可以copy到word文件,设置适当字体大小和行间距,带回家给娃做做题 void MainWindow::test(int answerMax, int count) {// 创建一个随机数生成器QRandomGenerator *gener…

C程序的内存空间布局(栈、堆、数据区、常量区、代码区)

目录 C程序的内存空间布局动态区栈区堆区 静态区数据区常量区代码区 栈的地址测试堆的测试地址静态区演示 橙色 C程序的内存空间布局 补充:内存地址和内存空间 内存地址是一个编号,通常由16进制表示,它代表一个内存空间。在计算机中存储器的…

c语言小游戏之扫雷

目录 一:游戏设计理念及思路 二:初步规划的游戏界面 三:开始扫雷游戏的实现 注:1.创建三个文件,test.c用来测试整个游戏的运行,game.c用来实现扫雷游戏的主体,game.h用来函数声明和包含头文…