首页 > 编程知识 正文

elasticsearch高级,Elasticsearch原理

时间:2023-05-03 19:35:22 阅读:9509 作者:302

ES的基本概念

ES=elaticsearch缩写,Elasticsearch是一个开源、可扩展的分布式全文搜索引擎,几乎可以实时存储和检索数据; 可扩展性强,可以扩展到数百台服务器,处理PB级别的数据。

Elasticsearch也是使用Java开发的,其核心是使用Lucene实现所有索引和搜索功能,但其目的是通过简单的rest风格的API隐藏Lucene的复杂性,简化全文搜索。

Lucene和ES的关系?

1 ) Lucene只是一个库。 要使用它,必须使用Java作为开发语言,并将其直接集成到APP应用程序中。 更糟的是,Lucene非常复杂,需要深入了解搜索知识,并了解它是如何工作的。

2 ) Elasticsearch也是使用Java开发的,其核心是使用Lucene实现所有索引和检索的功能,其目的是用简单的rest风格的API隐藏Lucene的复杂性,使全文检索变得简单。

ES主要问题解决:

1 )检索相关数据

2 )返回统计结果

3 )速度必须快。

ES的工作原理

当ElasticSearch节点启动时,它将使用多播(multicast,或者如果用户更改了配置,则是单播)在群集中搜索其他节点并建立连接。 该过程如下图所示。

ES概念

1 )集群:集群。

ES可以用作独立的单个搜索服务器。 但是,为了处理大型数据集并提供容错和高可用性,ES可以在许多相互协作的服务上运行。 这些服务器的集合称为集群。

2 )节点。

形成集群的各服务器称为节点。

3 ) Shard )分片。

如果有大量文档,则可能由于内存限制、磁盘处理能力不足、无法充分快速响应客户端请求等原因,缺少一个节点。 在这种情况下,数据可以分成小块。 每个分片都位于不同的服务器上。

如果sdj查询的索引分布在多个片上,则ES会将查询发送到每个相关片,并将结果分组。 该APP应用程序不知道片的存在。 也就是说,这个过程对用户来说是透明的。

4 )副本:副本。

要提高查询吞吐量或实现高可用性,请使用分片副本。

副本是切片的精确副本,每个切片可以有零个或多个副本。 ES有许多相同的拼贴,但其中一个拼贴被选择更改索引操作。 这种特殊的瓷砖叫主瓷砖。

如果主片丢失,例如,如果该片所在的数据不可用,群集会将副本提升到新的主片。

5 )全文检索。

全文搜索是指对一篇文章进行索引,可以根据关键字进行搜索。 就像mysql中的like语句。

全文索引是指根据词语的意思对内容进行分词,并分别制作索引。 例如,“你们的热情来自什么事情”,请等到“你们”、“热情”、“什么事情”、“token”。 这样的话,ssdj搜索“你们”或“热情”可能也会出现这句话。

ES数据架构的主要概念(与关系数据库Mysql进行比较)

(1)关系数据库中的数据库(DataBase )等效于ES中的索引(Index )

)等效于一个数据库下有n个表(Table ),一个索引索引下有n个以上类型(Type )

)3)一个数据库表(Table )下的数据由多行(ROW )多列(column,属性)构成,等效于一个Type由多个文档(Document )和多个Field构成。

)4)在关系数据库中,架构定义表、每个表中的字段以及表与字段之间的关系。 与此相对应,在ES中,映射定义索引下Type的字段处理规则。 这意味着如何创建索引、索引类型、是否保存原始索引JSON文档、是否压缩原始JSON文档、是否需要分词处理以及如何进行分词处理。

)5)数据库中insert的增加、删除delete、更改update、检查搜索操作等同于ES中PUT/POST的增加、删除delete、更改_update、检查GET。

什么是ELK?

elk=elasticsearchlogstashkibana

电子搜索:后台分布式存储和全文搜索

logstash:日志加工,“搬运工”

kibana :数据可视化展示。

ELK体系结构为数据分布式存储、可视查询和日志分析创建了强大的管理链。 三方协同合作、取长补短,共同完成分布式大数据处理。

ES的特点和优势

1 )分布式实时文件存储。 将每个字段保存到索引中,以便进行搜索。

2 )实时分析的分布式搜索引擎。

分布式:索引被划分为多个切片,每个切片可以有零个或多个副本。 群集中的每个数据节点都可以托管一个或多个片,并协调和处理各种操作。

负载平衡和路由在大多数情况下是自动进行的。

3 )可扩展到数百台服务器,处理Pb级结构化或非结构化数据。 它还可以在一台PC上运行(经过测试)

4 )支持插件机制、分词插件、同步插件、Hadoop插件、可视插件等。

>ES性能

性能结果展示

(1)硬件配置:

CPU 16核 AuthenticAMD

内存 总量:32GB

硬盘 总量:500GB 非SSD

(2)在上述硬件指标的基础上测试性能如下:

1)平均索引吞吐量: 12307docs/s(每个文档大小:40B/docs)

2)平均CPU使用率: 887.7%(16核,平均每核:55.48%)

3)构建索引大小: 3.30111 GB

4)总写入量: 20.2123 GB

5)测试总耗时: 28m 54s.

ES案例

1) 2013年初,GitHub抛弃了Solr,采取ElasticSearch 来做PB级的搜索。 “GitHub使用ElasticSearch搜索20TB的数据,包括13亿文件和1300亿行代码”。

2)维基百科:启动以elasticsearch为基础的核心搜索架构。

3)SoundCloud:“SoundCloud使用ElasticSearch为1.8亿用户提供即时而精准的音乐搜索服务”。

4)百度:百度目前广泛使用ElasticSearch作为文本数据分析,采集百度所有服务器上的各类指标数据及用户自定义数据,通过对各种数据进行多维分析展示,辅助定位分析实例异常或业务层面异常。目前覆盖百度内部20多个业务线(包括casio、云分析、网盟、预测、文库、直达号、钱包、风控等),单集群最大100台机器,200个ES节点,每天导入30TB+数据。

1)新系统开发尝试使用ES作为存储和检索服务器;

2)现有系统升级需要支持全文检索服务,需要使用ES。

1)新浪ES 如何分析处理32亿条实时日志

2)阿里ES 构建挖财自己的日志采集和分析体系

3)有赞ES 业务日志处理

4)ES实现站内搜索

如何部署ES?

1)零配置,开箱即用

2)没有繁琐的安装配置

3)java版本要求:最低1.7

我使用的1.8

[root@laoyang config_lhy]# echo $JAVA_HOME

/opt/jdk1.8.0_91

4)下载地址:

5)启动

cd /usr/local/elasticsearch-2.3.5

./fzdhxc/elasticsearch

fzdhxc/elasticsearch -d(后台运行)

必要的Head、kibana、IK(中文分词)、graph等插件的详细安装和使用。

ES windows下一键安装

自写bat脚本实现windows下一键安装。

1)一键安装ES及必要插件(head、kibana、IK、logstash等)

2)安装后以服务形式运行ES。

3)比自己摸索安装节省至少2小时时间,效率非常高。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。