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,一经查实,立即删除!

相关文章

C# 2的幂

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

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

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

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

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

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

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

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 查看是否已…

mysql的json处理

写在前面 需要注意&#xff0c;5.7以上版本才支持&#xff0c;但如果是生产环境需要使用的话&#xff0c;尽量使用8.0版本&#xff0c;因为8.0版本对json处理做了比较大的性能优化。你你可以使用select version();来查看版本信息。 本文看下MySQL的json处理。在正式开始让我们先…

PostgreSQL数据库中,查询时提示表不存在的解决办法

最近遇到一个奇怪的问题&#xff0c;以前从来没有遇到过&#xff0c;在postgres SCHEMA下执行select * from table1语句时&#xff0c;提示表不存在&#xff0c;而实际这个表确是存在的&#xff0c;只不过是在public SCHEMA下。在public SCHEMA下执行这个sql语句是没有问题的。…

【Linux下6818开发板(ARM)】在液晶屏上显示RGB颜色和BMP图片

(꒪ꇴ꒪ ),hello我是祐言博客主页&#xff1a;C语言基础,Linux基础,软件配置领域博主&#x1f30d;快上&#x1f698;&#xff0c;一起学习&#xff01;送给读者的一句鸡汤&#x1f914;&#xff1a;集中起来的意志可以击穿顽石!作者水平很有限&#xff0c;如果发现错误&#x…

C++ 类和对象

面向过程/面向对象 C语言是面向过程&#xff0c;关注过程&#xff0c;分析出求解问题的步骤&#xff0c;通过函数调用逐步解决问题 C是基于面对对象的&#xff0c;关注的是对象——将一件事拆分成不同的对象&#xff0c;依靠对象之间的交互完成 引入 C语言中结构体只能定义…

flask处理表单数据

flask处理表单数据 处理表单数据在任何 web 应用开发中都是一个常见的需求。在 Flask 中&#xff0c;你可以使用 request 对象来获取通过 HTTP 请求发送的数据。对于 POST 请求&#xff0c;可以通过 request.form 访问表单数据。例如&#xff1a; from flask import Flask, r…