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搜索引擎系统入门_第1张图片

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

Elasticsearch搜索引擎系统入门_第2张图片

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),如下图所示:

Elasticsearch搜索引擎系统入门_第3张图片

Logstash

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

Logstash有如下特性:

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

Elasticsearch搜索引擎系统入门_第4张图片 

Kibana

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

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

Elasticsearch搜索引擎系统入门_第5张图片

Beats

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

Elasticsearch搜索引擎系统入门_第6张图片

Elasticsearch在日志场景的应用

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

Elasticsearch与数据库的集成

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

Elasticsearch搜索引擎系统入门_第7张图片

【安装Elasticsearch】

前往官网 https://www.elastic.co/cn/downloads/elasticsearch 下载适合自己操作系统的安装包,然后解压。Elasticsearch搜索引擎系统入门_第8张图片

目录结构:

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

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

Elasticsearch搜索引擎系统入门_第9张图片

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

Elasticsearch搜索引擎系统入门_第10张图片

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

#启动单节点
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

Elasticsearch搜索引擎系统入门_第11张图片 

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

Elasticsearch搜索引擎系统入门_第12张图片

安装Kibana

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

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

Elasticsearch搜索引擎系统入门_第13张图片

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

Elasticsearch搜索引擎系统入门_第14张图片

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

Elasticsearch搜索引擎系统入门_第15张图片Elasticsearch搜索引擎系统入门_第16张图片安装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版本的。 

Elasticsearch搜索引擎系统入门_第17张图片下载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

Elasticsearch搜索引擎系统入门_第18张图片数据导入中...

Elasticsearch搜索引擎系统入门_第19张图片 

你可能感兴趣的:(Elasticsearch,elasticsearch,大数据,搜索引擎,elk,lucene)