Elasticsearch搜索引擎系统入门

news2024/11/19 11:26:58

目录

【认识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.coloradmin.cn/o/813294.html

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

相关文章

Day01-作业(HTMLCSS)

作业1:通过HTML的标签及CSS样式,完成如下企业简介html页面的制作。 【必做】 A. 最终效果如下: B. 文字素材如下: 企业简介传智教育(股票代码 003032),隶属江苏传智播客教育科技股份有限公司,注册资本4亿元…

【NVIDIA CUDA】2023 CUDA夏令营编程模型(一)

博主未授权任何人或组织机构转载博主任何原创文章,感谢各位对原创的支持! 博主链接 本人就职于国际知名终端厂商,负责modem芯片研发。 在5G早期负责终端数据业务层、核心网相关的开发工作,目前牵头6G算力网络技术标准研究。 博客…

【Git】Git GitHub

1. Git1.1 Git基本操作1.2 Git版本回退1.3 Git分支操作 2. Git 配合GitHub2.1 生成密钥2.2 GitHub添加公钥2.3 Git连接GitHub2.4 本地仓库关联远程仓库2.5 本地代码push远程仓库2.6 本地clone远程仓库2.7 本地fetch和pull 1. Git 1.1 Git基本操作 touch test.py 工作区创建文…

全网最细,Postman接口测试实战详细总结,一篇进阶...

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 Postman是一款功能…

【力扣每日一题】2023.7.30 环形链表2

题目: 示例: 分析: 这道题属于是那种知道解法就很简单,不知道解法就很难独立想出来的那种,我们只需要稍微记住这类题的固定解法就可以。 所以接下来我先说解法,再解释为什么解法可以解出来。 那么我们都…

nginx使用-(想学nginx,这篇就够了)

nginx使用-(想学nginx,这篇就够了) upstream wgz{server 127.0.0.1:8081 ;server 127.0.0.1:8082 ;fair;}反向代理 动静分离 负载均衡 高可用集群配置 反向代理 upstream要转发的地址的配置proxy_pass请求转发的地址 location /user{proxy_…

程序设计 算法基础

✅作者简介:人工智能专业本科在读,喜欢计算机与编程,写博客记录自己的学习历程。 🍎个人主页:小嗷犬的个人主页 🍊个人网站:小嗷犬的技术小站 🥭个人信条:为天地立心&…

【并发专题】操作系统模型及三级缓存架构

目录 课程内容一、冯诺依曼计算机模型详解1.计算机五大核心组成部分2.CPU内部结构3.CPU缓存结构4.CPU读取存储器数据过程5.CPU为何要有高速缓存 学习总结 课程内容 一、冯诺依曼计算机模型详解 现代计算机模型是基于-冯诺依曼计算机模型 计算机在运行时,先从内存中…

python学习之【浅拷贝】

前言 上一篇文章,python学习之【继承、封装、多态】主要学习了面向对象的三大特征。这篇文章记录下对python的浅拷贝的学习,下一篇文章接着学习深拷贝。 简单了解 浅拷贝:python拷贝一般都是浅拷贝,拷贝时,对象包含的…

【C语言】函数重难点之函数递归

大家好,我是深鱼~ 目录 一、函数递归知识讲解 1.什么是递归? 2.递归的两个必要条件 2.1练习1: 2.2练习2: 二、递归与迭代 2.1练习3 2.2练习4 一、函数递归知识讲解 1.什么是递归? 程序调用自身的编程技巧称为…

UNITY随记(八) SHADER实现立方体CUBE显示边框,描边

Shader "Vitens/CubeOutline"{Properties{_Color("Color", color) = (1,1,1,1)_Width("Width", range(0,0.5)) = 0.1}SubShader{Tags {"Queue"=

windows下载安装FFmpeg

FFmpeg是一款强大的音视频处理软件,下面介绍如何在windows下下载安装FFmpeg 下载 进入官网: https://ffmpeg.org/download.html, 选择Windows, 然后选择"Windows builds from gyan.dev" 在弹出的界面中找到release builds, 然后选择一个版本&#xff0…

Java中的生产者/消费者模型

一、什么是生产者/消费者模型 生产者-消费者模型(Producer-Consumer problem)是一个非常经典的多线程并发协作的模型。 比如某个模块负责生产数据,而另一个模块负责处理数据。产生数据的模块就形象地被称为生产者;而处理数据的模…

基地培训一周总结-用两台虚拟机模拟公司和员工

前言: 本来是打算每天跟更新所学内容,但奈何自己接触新知识速度较慢,每天都在完不成任务的边缘疯狂试探,短时间大量知识的涌入,感觉脑袋瓜在有点 跟不上。这周结束的时候,老师布置了个小项目,融…

Linux操作系统下安装python环境

参考:Linux操作系统下安装python环境_linux如何下载python_秃头小猿-F的博客-CSDN博客 注意 切换用户 二、切换root用户 1.给root用户设置密码:命令:sudo passwd root输入密码,并确认密码。2.重新输入命令:su root …

【数据结构】之十分好用的“链表”赶紧学起来!(第一部分单向链表)

💐 🌸 🌷 🍀 🌹 🌻 🌺 🍁 🍃 🍂 🌿 🍄🍝 🍛 🍤 📃个人主页 :阿然成长日记 …

某行动态cookie反爬虫分析

某行动态cookie反爬虫分析 1. 预览 反爬网址(base64): aHR0cDovL3d3dy5wYmMuZ292LmNu 反爬截图: 需要先加载运行js代码,可能是对环境进行检测,反调试之类的 无限debugger 处理办法 网上大部分人说的都是添加cookie来解决。 那个noscrip…

哈工大计算机网络课程网络安全基本原理之:身份认证

哈工大计算机网络课程网络安全基本原理之:身份认证 在日常生活中,在很多场景下我们都需要对当前身份做认证,比如使用密码、人脸识别、指纹识别等,这些都是身份认证的常用方式。本节介绍的身份认证,是在计算机网络安全…

flask处理表单数据

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

设置Fiddler来抓取Android接口数据

1.下载安装fiddler,安装包可自行百度。安装完成打开fiddler 2.将Fiddler设置远程访问PC 选择Fiddler->Tools->Fiddler Option 3.选择Connection,在Fiddler listen on port后输入8888,表示允许远程PC连接。 4.在电脑运行窗口中&#xf…