Elasticsearch应⽤场景及基本概念
⼀、应⽤场景
Elasticsearch具有⼴泛的应⽤场景,包括全⽂搜索、⽇志分析、运维监控、安全分析等。
- 全⽂搜索
Elasticsearch提供了全⽂搜索的功能,适⽤于电商商品搜索、App搜索、企业内部信息搜索、IT系统搜索等。
例如当您运营⼀个提供客户检索商品的在线电⼦商城的时候,可以使⽤Elasticsearch来存储整个商品的⽬录和库存,并且为客户提供检索和⾃动推荐的功能。
- ⽇志分析
复杂的业务场景通常会产⽣繁杂多样的⽇志,如Apache Log、System Log、MySQL Log等,往往很难从繁杂的⽇志中获取价值,却要承担其存储的成本。Elasticsearch能够借助Beats、Logstash等快速对接各种常见的数据源,并通过集成的Kibana⾼效地完成⽇志的可视化分析,让⽇志产⽣价值。
- 运维监控
当您在ECS或者物理机中部署了Docker容器、MySQL或MongoDB等数据库,或者您有复杂的IOT场景等,可使⽤Elasticsearch结合Beats、Logstash或ElasticFlow将所有⽇志实时集中并构建索引,然后通过集成的Kibana灵活地运⽤数据构建可视化运维看板,并在看板上展⽰主机名称、IP地址、部署情况、显⽰颜⾊等信息。
- 安全分析
当您需要通过⽇志解决公司内部繁杂的安全审计⼯作,可通过Elasticsearch分析、检索海量历史⽇志,⾼效地完成安全审计⼯作。同时您可以借助Elasticsearch的数据响应性能,快速感知系统中实时发⽣的事件,及时帮助您规避风险。
⼆、基本概念
本⽂介绍Elasticsearch服务使⽤过程中遇到的常⽤名词的基本概念和简要描述。
集(cluster)
⼀个Elasticsearch集由⼀个或多个ES节点组成,并提供集内所有节点的联合索引和搜索能⼒(所有节点共同存储数据)。⼀个集被命名为唯⼀的名字(默认为elasticsearch),集名称⾮常重要,因为节点需要通过集的名称加⼊集。
请确保在不同的环境使⽤不同的集名称,否则会导致节点添加到错误的集中。
节点(node)
⼀个节点是集中的⼀个服务器,⽤来存储数据并参与集的索引和搜索。和集类似,节点由⼀个名称来标识,默认情况下,该名称是在节点启动时分配给节点的随机通⽤唯⼀标识符(UUID)。您也可以⾃定义任意节点的名称,节点名称对于管理⼯作很重要,因为通过节点名称可以确定⽹络中的哪些服务器对应于Elasticsearch集中的哪些节点。
⼀个节点可以被添加到指定名称的集中。默认情况下,每个节点会被设置加⼊到名称为elasticsearch的集中,这意味着,如果在您在⽹络中启动了某些节点(假设这些节点可以发现彼此),它们会⾃动形成并加⼊名称为elasticsearch的集中。
⼀个集可以拥有任意多的节点。此外,如果在您的⽹络中没有运⾏任何Elasticsearch节点,此时启动⼀个节点会创建⼀个名称为elasticsearch的单节点集。
索引(index)
⼀个索引是⼀个拥有⼀些相似特征的⽂档的集合(相当于关系型数据库中的⼀个数据库)。例如,您可以拥有⼀个客户数据的索引,⼀个商品⽬录的索引,以及⼀个订单数据的索引。⼀个索引通常使⽤
⼀个名称(所有字母必须⼩写)来标识,当针对这个索引的⽂档执⾏索引、搜索、更新和删除操作的时候,这个名称被⽤来指向索引。 Elasticsearch与关系型数据库的对应关系:mysql帮助文档
类型(type)
⼀个类型通常是⼀个索引的⼀个逻辑分类或分区,允许在⼀个索引下存储不同类型的⽂档(相当于关系型数据库中的⼀张表),例如⽤户类型、博客类型等。⽬前已经不⽀持在⼀个索引下创建多个类型,并且类型概念已经在后续版本中删除,详情请参见es官⽅⽂档
⽂档(document)
⼀个⽂档是可以被索引的基本信息单元(相当于关系型数据库中的⼀⾏数据)。例如,您可以为⼀个客户创建⼀个⽂档,或者为⼀个商品创建⼀个⽂档。⽂档可以⽤JSON格式来表⽰。在⼀个索引中,您可以存储任意多的⽂档,且⽂档必须被索引。
字段(field)
组成⽂档的最⼩单位。相当于关系型数据库中的⼀列数据。
映射(mapping)
⽤来定义⼀个⽂档以及其所包含的字段如何被存储和索引,例如在mapping中定义字段的名称和类型,以及所使⽤的分词器。相当于关系型数据库中的Schema。 分⽚(shards) 代表索引分⽚,Elasticsearch可以把⼀个完整的索引分成多个分⽚,这样的好处是可以把⼀个⼤的索引拆分成多个,分布到不同的节点上,构成分布式搜索。分⽚的数量只能在索引创建前指定,并且索引创建后不能更改。
⼀个分⽚可以是主分⽚或副本分⽚。Elasticsearch 7.0以下版本默认为⼀个索引创建5个主分⽚,并分别为每个主分⽚创建1个副本分
⽚,7.0及以上版本默认创建1个主分⽚和1个副本分⽚。两者区别如下:
recovery
代表数据恢复或数据重新分布,Elasticsearch在有节点加⼊或退出时会根据机器的负载对索引分⽚进⾏重新分配,挂掉的节点重新启动时也会进⾏数据恢复。
gateway
代表Elasticsearch索引快照的存储⽅式,Elasticsearch默认优先将索引存放到内存中,当内存满时再将这些索引持久化存储⾄本地硬盘。gateway对索引快照进⾏存储,当这个Elasticsearch集关闭再重新启动时就会从gateway中读取索引备份数据。Elasticsearch⽀持多种类型的gateway,有本地⽂件系统(默认)、分布式⽂件系统、Hadoop的HDFS和阿⾥云的OSS云存储服务。
<
代表Elasticsearch的⾃动发现节点机制,Elasticsearch是⼀个基于p2p的系统,它先通过⼴播寻存在的节点,再通过多播协议进⾏节点之间的通信,同时也⽀持点对点的交互。
Transport
Transport代表Elasticsearch内部节点或集与客户端的交互⽅式,默认使⽤TCP协议进⾏交互。同时,通过插件的⽅式集成,也⽀持使⽤HTTP协议(JSON格式)、thrift、servlet、memcached、zeroMQ等传输协议进⾏交互。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论