首页 > IT基础架构 > > ElasticSearch 介绍
ElasticSearch,官网上对它的定义为:
Elasticsearch is a distributed, RESTful search and analytics engine capable of solving a growing number of use cases.
说它是一个分布式的,具有Restful编程风格的,可解决不断出现的用例的一个分析搜索引擎。搜索这点大家认识都很深刻,它的分析能力,其实也很强。目前我们这边做过命中量为1.2亿的聚合(简单的聚合统计)运算,时间只需要5s左右。很给力!
它具有以下四个特征:
速度特别快
200亿的数据量,一个查询命中量有210w,只取1w,仅需93ms。
可扩展性很好
理论上任何机器都可以,大到高性能服务器,小到普通台式电脑。还是建议统一的配置较好,如果集群中既有ssd,又有普通硬盘,普通硬盘的查询和导入会拉慢整体的性能。
弹性很好
如果你的索引都是多备份,即使挂了台节点,系统依然可以正常运行。
灵活性很好
支持结构化和非结构化的数据。All data types are welcome.
默认情况下,插入的数据1s后可查询,所示称其为准实时系统。
由一个或多个节点组成,能保存数据,且所有节点提供索引和搜索功能。
集群的单个server,可存储数据,并提供集群的索引和搜索功能。
Client节点:为外部提供检索的节点。

所有具有相似特征的文档集合。类似于数据库的database。
Type主要用来逻辑上分割索引。类似于数据库中的table。数据库中的table是物理分割的,但ES的type是逻辑分割的,不同type的相同field还是会放在一起。因此,ES6.0中已取消多type。
可被索引的最小单位。类似于数据库中的一条记录。
索引的大小可能超出单个节点的限制,将索引分为多块存储,每块即为一个分片。
分片的备份数。默认情况下每个索引有一个备份。
Green:健康状态,没有分片丢失。

网上找的相关内容感觉都不全,我按照源码的结构整理了一下,大致分为以下几个模块:
加载用户自定义的脚本插件,提供脚本服务(ScriptService)。
脚本服务包括:
分词相关的模块。
加载对应的系统配置。
将请求中的正则表达式索引名字转化为集群中具体的索引名字
创建shard分配器(ShardsAllocator)分配shard
提供集群服务(clusterService)
集群服务(ClusterService)
配置每个节点上索引共享的类和服务。
加载插件和内嵌的查询组件,包括(打分、聚合、排序等等)
Gateway模块用于存储es集群的元数据信息。这部分信息主要包括所有的索引连同索引设置和显式的Mapping信息。集群元数据的每一次改变(比如增加删除索引等),这些信息都要通过Gateway模块进行持久化。当集群第一次启动的时候,这些信息就会从Gateway模块中读出并应用。
注册和绑定所有网络相关的类。
Repositories模块主要是做索引的快照和恢复。Snapshot/Restore
Discovery模块主要用来做节点发现。
后面的ES文章主要会在ClusterModule和SearchModule上面下功夫,ScriptModule、AnalysisModuleGatewayModule和RepositoriesModule模块也会聊一聊,其他的模块会在介绍前面的模块时顺带点一下,不会花大片的篇幅讲解。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69946831/viewspace-3136163/ ,如需转载,请注明出处,否则将追究法律责任。