Elasticsearch搜索引擎系统入门

目录

【认识Elasticsearch】

Elasticsearch主要应用场景

Elasticsearch的版本与升级

【Elastic Stack全家桶】

Logstash

Kibana

Beats

Elasticsearch在日志场景的应用

Elasticsearch与数据库的集成

【安装Elasticsearch】

安装插件 

安装Kibana

安装Logstash


【认识Elasticsearch】

Elasticsearch是一个分布式搜索引擎系统,可以实现大数据近实时分析。官网:https://www.elastic.co/cn/

Elasticsearch起源于Lucene,Lucene是基于Java语言开发的搜索引擎库类,创建于1999 年,2005年成为Apache顶级开源项目。Lucene 具有高性能、 易扩展的优点,但也有一些局限性:只能基于 Java语言开发,原生并不支持水平扩展。

2004 年Shay Banon基于Lucene 开发了Compass,2010年Shay Banon重写了Compass, 取名Elasticsearch。相比于原生的Lucene,Elasticsearch支持分布式,可水平扩展,降低全文检索的学习曲线,可以被任何编程语言调用。

Elasticsearch支持多种方式集成接入,官网提供了多种编程语言的类库,包括 Java、JavaScript、Ruby、Go、.NET、PHP、Perl、Python、Eland、Rust 等,可以查看:https://www.elastic.co/guide/en/elasticsearch/client/index.html

Elasticsearch主要应用场景

  • 海量数据的分户式存储以及集群管理,服务与数据的高可用,水平扩展
  • 近实时搜索,性能卓越,结构化/全文/地理位置/自动完成
  • 海量数据的近实时分析,聚合功能 

Elasticsearch的版本与升级

0.4版本: 2010年2月第一次发布
1.0版本: 2014年1月发布
2.0版本: 2015年10月发布
5.0版本: 2016年10月发布

新特性5.x:
● Lucene 6.x, 性能提升,默认打分机制从TF-IDF改为BM 25
● 支持Ingest节点/ Painless Scripting / Completion suggested支持/原生的Java REST客户端
● Type标记成deprecated, 支持了Keyword的类型
● 性能优化:内部引擎移除 了避免同一文档并发更新的竞争锁,带来15% - 20%的性能提升;Instant aggregation,支持分片上聚合的缓存;新增了Profile API。

6.0版本: 2017年10月发布

新特性6.x
● Lucene 7.x

● 新功能:跨集群复制(CCR);索引生命周期管理;SQL的支持
● 更友好的的升级及数据迁移:在主要版本之间的迁移更为简化;全新的基于操作的数据复制框架,可加快恢复数据;
● 性能优化:有效存储稀疏字段的新方法,降低了存储成本;在索引时进行排序,可加快排序的查询性能

7.0版本: 2019年4月发布

新特性7.x
● Lucene 8.0
● 重大改进-正式废除单个索引下多Type的支持
● 7.1 开始,Security 功能免费使用
● ECK - Elasticseach Operator on Kubernetes
● 新功能:New Cluster coordination;Feature-Complete High Level REST Client;Script Score Query
● 性能优化:默认的 Primary Shard数从5改为1,避免Over Sharding;性能优化,更快的Top K

更多信息,查看:https://www.elastic.co/cn/support/eol

【Elastic Stack全家桶】

Elasticsearch公司的核心产品包括 Elasticsearch、Kibana、Beats 和 Logstash(也称为 ELK Stack),如下图所示:

Logstash

Logstash诞生于2009年,最初用来做日志的采集与处理,于2013年被Elasticsearch公司收购。现在已经成为了一个开源的服务器端数据处理管道,支持从不同来源采集数据和转换数据,并将数据发送到不同的存储库中。https://www.elastic.co/cn/logstash

Logstash有如下特性:

  • 实时解析和转换数据:从IP地址破译出地理坐标;将PII数据匿名化,完全排除敏感字段
  • 可扩展:支持200多个插件(日志/数据库/Arcsigh/Netflow)
  • 可靠性安全性:Logstash会通过持久化队列来保证至少将运行中的事件送达一次;数据传输加密
  • 数据监控

 

Kibana

Kibana是一个数据可视化工具, 能够方便的查看和分析数据。https://www.elastic.co/cn/kibana

Kibana 名字的含义:Kiwifruit + Banana,是一个基于 Logstash的工具,2013 年加入Elastic公司。

Beats

Beats是一个轻量型数据采集器,免费且开放的平台,集合了多种单一用途数据采集器。它们从成百上千或成千上万台机器和系统向 Logstash 或 Elasticsearch 发送数据。https://www.elastic.co/cn/beats

Elasticsearch在日志场景的应用

一个项目的日志部分的重要性不言而喻,通过日志可以排查到各类问题,如果日志分散在不同的机器上,那么就可以使用Elasticsearch来收集各个机器的日志,然后合并处理,方便查询。 主要实现如下功能:日志收集、格式化分析、全文检索、风险告警。

Elasticsearch与数据库的集成

虽然可以直接使用Elasticsearch作为数据库存储数据,但是很多时候会需要和传统的数据库(比如MySQL、Oracle、MongoDB等)结合使用,可以通过消息队列(比如RabbitMQ、Kafka等)将数据库的数据同步到Elasticsearch中再进行分析处理。

【安装Elasticsearch】

前往官网 https://www.elastic.co/cn/downloads/elasticsearch 下载适合自己操作系统的安装包,然后解压。

目录结构:

目录配置文件描述
bin可执行的脚本文件,包括启动elasticsearch,安装插件。运行统计数据等
configelasticsearch.yml集群配置文件,user, role based相关配置
jdkJava运行坏境
datapath.data数据文件,保存 ES 运行过程中需要保存的数据。
libJava类库
logspath.log日志文件
modules包含所有ES功能模块的存放目录,如aggs、reindex、geoip、xpack、eval
plugins包含所有已安装插件 

启动:./bin/elasticsearch(直接启动) 或 ./bin/elasticsearch -d(后台启动)

浏览器输入:http://localhost:9200/

使用下面的命令启动集群: 

#启动单节点
bin/elasticsearch -E node.name=node0 -E cluster.name=geektime -E path.data=node0_data -d#启动集群(启动几个实例,就运行几次)
bin/elasticsearch -E node.name=node0 -E cluster.name=geektime -E path.data=node0_data -d
bin/elasticsearch -E node.name=node1 -E cluster.name=geektime -E path.data=node1_data -d
bin/elasticsearch -E node.name=node2 -E cluster.name=geektime -E path.data=node2_data -d
bin/elasticsearch -E node.name=node3 -E cluster.name=geektime -E path.data=node3_data -d#查看集群
GET http://localhost:9200
#查看nodes
GET _cat/nodes
GET _cluster/health#退出
ps -ef | grep elasticsearch,然后kill 对应的pid

安装插件 

#查看已安装的插件
./bin/elasticsearch-plugin list#安装国际化分析插件 analysis-icu
./bin/elasticsearch-plugin install analysis-icu#重新启动
./bin/elasticsearch

在浏览器打开:http://localhost:9200/_cat/plugins?v

 

进入 https://www.elastic.co/guide/en/elasticsearch/plugins/7.10/intro.html 可以查看指定版本的插件列表 

安装Kibana

进入 https://www.elastic.co/cn/downloads/kibana 下载对应版本的Kibana安装包(需要个ES版本一致),然后解压,执行 ./bin/kibana(需要先启动Elasticsearch)

访问 http://localhost:5601/app/kibana 打开Kibana控制台:

可以添加一些测试数据,点上面的“Add sample data”,然后选择“Sample data”:

然后从Dashboard中可以看到刚才添加的数据:

安装Kibana的插件和ES类似:

#查看已安装的Kibana插件
./bin/kibana-plugin list#安装Kibana插件
./bin/kibana-plugin install plugin_location#移除Kibana插件
./bin/kibana-plugin remove

安装Logstash

进入 https://www.elastic.co/cn/downloads/past-releases#logstash 下载和ES相同版本的Logstash安装包,这里我下载7.1版本的。 

下载MovieLens最小测试数据集:https://grouplens.org/datasets/movielens/ ,解压Logstash安装包,并且导入Movielens的测试数据集。

也可以从这里下载:https://gitee.com/rxbook/elasticsearch-demo/tree/master

#下载与ES相同版本号的logstash,(7.1.0),并解压到相应目录
#修改movielens目录下的logstash.conf文件
#path修改为,你实际的movies.csv路径
input {file {path => "YOUR_FULL_PATH_OF_movies.csv"start_position => "beginning"sincedb_path => "/dev/null"}
}#启动Elasticsearch实例,然后启动 logstash,并指定配置文件导入数据(操作比较耗时,耐心等待)
sudo bin/logstash -f /YOUR_PATH_of_logstash.conf

数据导入中...

 

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

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

相关文章

【华为OD】运维日志排序

题目描述: 运维工程师采集到某产品线网运行一天产生的日志n条,现需根据日志时间先后顺序对日志进行排序,日志时间格式为H:M:S.N。 H表示小时(0~23) M表示分钟(0~59) S表示秒(0~59) N表示毫秒(0~999) 时间可能并没有补全,也就是说&…

C# 2的幂

231 2的幂 给你一个整数 n,请你判断该整数是否是 2 的幂次方。如果是,返回 true ;否则,返回 false 。 如果存在一个整数 x 使得 n 2x ,则认为 n 是 2 的幂次方。 示例 1: 输入:n 1 输出&a…

【图论】三种中心性 —— 特征向量、katz 和 PageRank

维基百科:在图论和网络分析中,中心性指标为图中相应网络位置的节点分配排名或数值。中心性这一概念最初起源于社交网络分析,因此很多衡量中心性的术语也反映了其社会学背景。 不同中心性指标对 “重要” 的衡量方式不同,因此适用于…

“深入理解SpringBoot:从入门到精通“

标题:深入理解Spring Boot:从入门到精通 摘要:本文将介绍Spring Boot的基本概念和核心特性,并通过示例代码演示如何使用Spring Boot构建一个简单的Web应用程序。 1. 简介 Spring Boot是一个开源的Java框架,旨在简化基…

惊喜!1行Python代码,瞬间测你工作量,分享一个统计代码行数的神器

大家好,这里是程序员晚枫。 **你想不想知道一个项目中,自己写了多少行代码?**我用今天的工具统计了一下开源项目:python-office的代码行数,竟然有21w行! 我们一起看一下怎么用最简单的方法,统…

mac下安装vue cli脚手架并搭建一个简易项目

目录 1、确定本电脑下node和npm版本是否为项目所需版本。 2、下载vue脚手架 3、创建项目 1、下载node。 如果有node,打开终端,输入node -v和npm -v , 确保node和npm的版本,(这里可以根据自己的需求去选择,如果对最新版本的内容有…

【朴素贝叶斯-新闻主题分类】

朴素贝叶斯对新闻进行分类 朴素贝叶斯算法是一种常用的文本分类方法,特别适用于自然语言处理任务,如新闻分类。在这篇博客中,我们将使用Python的scikit-learn库来实现朴素贝叶斯算法,并将其应用于新闻分类任务。 数据准备 首先…

IO进程线程day3(2023.7.31)

一、Xmind整理&#xff1a; 文件描述符概念&#xff1a; 二、课上练习&#xff1a; 练习1&#xff1a;用fread和fwrite实现文件拷贝 #include <stdio.h> #include <string.h> #include <stdlib.h> #include <head.h> int main(int argc, const char…

什么叫前后端分离?为什么需要前后端问题?解决了什么问题?

单体架构出现的问题 引出&#xff1a;来看一个单体项目架构的结构 通过上述可以看到单体架构主要存在以下几点问题&#xff1a; 开发人员同时负责前端和后端代码开发&#xff0c;分工不明确开发效率低前后端代码混合在一个工程中&#xff0c;不便于管理对开发人员要求高(既会前…

千元内合板和单板吉他怎么选?SAGA萨伽SF600和VEAZEN费森CLR300怎么样?哪一款更适合初学者入门使用!【吉他评测】

对于预算不多的朋友&#xff0c;在选购前翻阅查询很多资料&#xff0c;吉他材质、桶型和尺寸等等疑问&#xff0c;不知道怎么选&#xff0c;无从下手&#xff0c;还容易遇到烧火棍&#xff0c;在这里介绍这两款VEAZEN费森CLR300&#xff08;单板&#xff09;和SAGA萨伽SF600&am…

vuejs源码阅读之代码生成器

代码生成器是模版编译的最后以后&#xff0c;它的作用是将AST转换成渲染函数中的内容&#xff0c;这个内容可以称为代码字符串。 代码字符串可以被包装在函数中执行&#xff0c;这个函数就是我们通常说的渲染函数。 渲染函数被执行之后&#xff0c;可以生成一份VNode&#xf…

分治法 Divide and Conquer

1.分治法 分治法&#xff08;Divide and Conquer&#xff09;是一种常见的算法设计思想&#xff0c;它将一个大问题分解成若干个子问题&#xff0c;递归地解决每个子问题&#xff0c;最后将子问题的解合并起来得到整个问题的解。分治法通常包含三个步骤&#xff1a; 1. Divid…

【Python系列】Python基础语法轻松入门—从变量到循环

目录 写在前面 语法介绍 变量 数据类型 整数 浮点数 字符串 列表 元组 字典 运算符 算术运算符 比较运算符 逻辑运算符 条件语句 循环语句 图书推荐 图书介绍 参与方式 中奖名单 写在前面 Python 是一种高级、解释型的编程语言&#xff0c;具有简单易学…

华为数通HCIP-IGMP(网络组管理协议)

IGMP&#xff08;网络组管理协议&#xff09; 作用&#xff1a;维护、管理最后一跳路由器以及组播接收者之间的关系&#xff1b; 应用&#xff1a;最后一跳路由器以及组播接收者之间&#xff1b; 原理&#xff1a;当组播接收者需要接收某个组别的流量时&#xff0c;会向最后…

Yolov8新版本解读:优化点如何加入新版本,通过加入EMA注意力进行对比说明

本文目的: 最近yolov8进行了一次较大的更新,对一些优化点加在哪个位置上有些变动,因此本文主要通过具体案列进行对比和说明,以便在新版本上能够轻松上手。 老版本 ultralytics/nn 新版本更新为: modules文件夹下内容如下: 解读: 将modules.py拆分为 1.__init__.…

7.31--Day01实战单体项目苍穹外卖

总结 今天回来在高铁上构想了一下&#xff0c;感觉大二有很多的事情要做&#xff0c;这个暑假还有一个月不能浪费了&#xff0c;回来最重要的事情就是看病了&#xff0c;身体一定要调养好了&#xff0c;大二的规划&#xff0c;大二上继续做省大创&#xff0c;需要做的有软件开…

vue表单筛选

目录 筛选 HTML scss* filterComp 排序 表格 自定义数据样式 inner-table 分页 删除 default-modal 自定义元素的插槽-占位符 .search-wrap {height: 60px;display: flex;align-items: center;overflow: hidden;padding: 0 20px;.selected-options-wrap {flex: 1;.…

centos7安装mysql数据库详细教程及常见问题解决

mysql数据库详细安装步骤 1.在root身份下输入执行命令&#xff1a; yum -y update 2.检查是否已经安装MySQL&#xff0c;输入以下命令并执行&#xff1a; mysql -v 如出现-bash: mysql: command not found 则说明没有安装mysql 也可以输入rpm -qa | grep -i mysql 查看是否已…

如何监控系统的运行的状况

问题提出&#xff1a; 系统状态不稳定&#xff0c;需要排查原因&#xff0c;所以需要监视所有进程的资源&#xff0c;以及进程是那个程序&#xff08;有些进程名写的一样&#xff0c;需要根据PID查看是哪个执行文件&#xff09; 方法&#xff1a; 1. 使用subprocess函数&…

java基础复习(第二日)

java基础复习(二) 1.抽象的&#xff08;abstract&#xff09;方法是否可同时是静态的&#xff08;static&#xff09;&#xff0c;是否可同时是本地方法&#xff08;native&#xff09;&#xff0c;是否可同时被 synchronized修饰&#xff1f; 都不能。 抽象方法需要子类重写…