01.Elasticsearch应用(一)

news2024/12/24 11:44:48

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: es
    environment:
      - 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.coloradmin.cn/o/1406848.html

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

相关文章

【算法专题】动态规划之路径问题

动态规划2.0 动态规划 - - - 路径问题1. 不同路径2. 不同路径Ⅱ3. 珠宝的最高价值4. 下降路径最小和5. 最小路径和6. 地下城游戏 动态规划 - - - 路径问题 1. 不同路径 题目链接 -> Leetcode -62.不同路径 Leetcode -62.不同路径 题目:一个机器人位于一个 m …

【taro react】 ---- 自动化【根据运行命令直接编译对应的是测试环境或正式环境】

1. 场景 开发和发布程序中遇到最常见的问题,需要一个环境配置文件,然后在启动或者编译前,需要开发者去修改对应的环境变量来控制启动或者编译的环境是测试环境还是正式环境。同时如果是需要维护小程序的 Jenkins 自动上传,就会更加的麻烦,上传的小程序越多,我们需要维护…

jssip挂断事件(ended),通话结束判断主叫挂断、被叫挂断还是系统挂断

需求 项目中使用jssip,在被叫挂断电话时播放提示音:对方已挂断 。显然在ended事件中加就可以,但是遇到个问题,当主叫挂断时也会播放,没办法找解决方法呗。 解决方法 遇事不决找api,但是这个官方api太狗了…

Linux7 安装 Oracle 19C RAC 详细图文教程

实战篇:Linux7 安装 Oracle 19C RAC 详细图文教程 本文是按照:https://www.modb.pro/db/154424的思路进行编写 一、安装前规划 安装RAC前,当然要先做好规划。具体包含以下几方面: 节点主机版本主机名实例名Grid/Oracle版本Publi…

OpenKruiseGame × KubeSphere 联合发布游戏服运维控制台,推动云原生游戏落地

作者:云原生游戏社区 近日,云原生游戏开源社区旗下 OpenKruiseGame(以下简称:OKG)基于 KubeSphere 4.0 LuBan 架构开发的游戏服运维控制台 OKG Dashboard 正式发布!现已上架 KubeSphere Marketplace 云原生…

【C++】C++封装三大特性

P110 深拷贝:在堆区申请空间,进行拷贝操作,需要手工释放申请空间 浅拷贝:简单的复制拷贝操作 c初始化列表属性: 静态成员函数不可访问静态成员函数,原因,静态成员函数初始化在程序初始化的时候…

【分布式技术专题】「分布式技术架构」 探索Tomcat技术架构设计模式的奥秘(Server和Service组件原理分析)

探索Tomcat技术架构设计模式的奥秘 Tomcat系统架构分析Tomcat 整体结构Tomcat总体结构图以 Service 作为“婚姻”1) Service 接口方法列表 2) StandardService 的类结构图方法列表 3) StandardService. SetContainer4) StandardService. addConnector 以 Server 为“居”1) Ser…

SpringSecurity认证登录成功后获取角色菜单

目录 前言 一、RBAC模型 二、实战应用 1. 建立用户、角色、资源实体类 2. 数据层查询角色资源 3. 业务层实现,调用数据层查询接口 4. SystemController控制器菜单获取方法 5. menu.jsp菜单页面实现 前言 本篇文章接SSM项目集成Spring Security 4.X版本&…

捆扎打包机的选择使用以及维修

捆包机又称打包机或捆扎机,是使用捆扎带缠绕产品或包装件,然后收紧并将两端通过热效应熔融或使用包扣等材料连接的机器。捆包机的功用是使塑料带能紧贴于被捆扎包件表面,保证包件在运输、贮存中不因捆扎不牢而散落,同时还使捆扎整…

MySQL也开始支持JavaScript了

2023 年 12 月 16 日,Oracle 公司在一篇名为 《Introducing JavaScript support in MySQL》的文章中宣布 MySQL 数据库服务器将开始支持 JavaScript 语言。 这个举措标志着继PostgreSQL之后, MySQL 也支持使用 JavaScript 编写函数和存储过程了。作为最…

SQL注入示例

例一、基础SQL注入:load_file读文件 CISP-PTE 认证考试 首先是有单引号和括号的,首要是要闭合,然后回显点是在-1的位置,读取文件上面的key的话使用的是load_file(/tmp/360/key) id-1)%09ununionion%09select%091,2,3,load_file…

NineData支持制定安全、可靠的SQL开发规范

在和数据库打交道中,不管是数据库管理员(DBA)还是开发人员,经常会做一些CURD操作。因为每个人对数据库的了解程度不一样,所以在项目上线时,往往还需要专职人员对数据库的CURD操作进行审核,确保C…

FPGA硬件架构——具体型号是xc7k325tffg676-2为例

1.共如下图14个时钟域,XmYn(按坐标理解) 2.IOB(IOB为可编程输入输出单元,当然在普通Bank上的IOB附近还有很多时钟资源,例如PLL,MMCM资源。), 2.1 FPGA的Bank分为HP Bank和HR Bank,二者对电压的要求范围不同,HR支持更大…

亚信安慧AntDB:AntDB-M元数据锁之对象锁(四)

l 对象锁 (per-object locks) 除了IX锁,其他类型都可以用于其他命名空间,这部分是最常用的锁类型。主要用于对数据库的某个具体元数据的并发控制。这类锁对象会比较多,对其有独特的管理,本文不再展开说明。 5.3 两种锁类型 根据…

【Java程序员面试专栏 专业技能篇】计算机网络核心面试指引

关于计算机网络部分的核心知识进行一网打尽,包括计算机的网络模型,各个层的一些重点概念,通过一篇文章串联面试重点,并且帮助加强日常基础知识的理解,全局思维导图如下所示 分层基本概念 计算机网络模型的分层及具体作用 计算机网络有哪些分层模型 可以按照应用层到物…

vivado:关联notepad++

网上好多都要下插件,看了野火视频,直接在vivado里面加路径弄好的 2 3(那个fonts and colors也经常用 改字体) 4 5 以下是我的路径 D:/gongjuruanjian/notepad/Notepad/notepad.exe [file name] -n[line number] 把[file name] -…

网关配置快速入门

网关配置快速入门 前端请求统一发送到网关: window.SITE_CONFIG[baseUrl] http://localhost:8088/api;网关服务中配置路由转发: server:port: 8088spring:application:name: gulimall-gateway #服务名称config:import: nacos:bootstrap.yaml #引入…

NAT配置

目录 静态NAT配置配置抓包测试 动态NAT配置配置测试 Easy IP配置配置测试 静态NAT配置 配置 nat static global { global-address} inside {host-address } 命令用于创建静态NAT。 global参数用于配置外部公网地址。 inside参数用于配置内部私有地址。 AR1-NAT <Huawei&g…

新版idea创建spring boot项目

目录 前言 汉化教程 项目模板初始化 1.点击新建项目 2.配置初始化信息 3.初始依赖选择 配置Maven 1.打开maven设置 2.重写maven配置文件 3.选择你创建的配置文件 4.重启项目 spring boot配置并测试 1.修改配置文件后缀 2.启动项目 3.编写测试控制类 4.重启项目…

【深度学习:Collaborative filtering 协同过滤】深入了解协同过滤:技术、应用与示例

此图显示了使用协作筛选预测用户评分的示例。起初&#xff0c;人们会对不同的项目&#xff08;如视频、图像、游戏&#xff09;进行评分。之后&#xff0c;系统将对用户对项目进行评分的预测&#xff0c;而用户尚未评分。这些预测基于其他用户的现有评级&#xff0c;这些用户与…