Elasticsearch初识之

前言

最近研究elsticsearch(以后简称es)也有一段时间, 现在将es的一些知识和心得进行梳理和总结

为什么要使用es?

当系统数据量上了10亿、100亿条的时候,我们通常会从以下情况去分析问题:1)如何选择合适的数据库?2)如何优化数据库?3)如何解决单点故障?4)如何保证数据安全?5)统计汇总时的效率问题?在我们选择了合适的数据库之后,传统型数据库会采用多建索引,分表分库的形式来提升查询效率;而通过通过主从备份解决数据安全性问题;也不能将数据一次性加载到内存中,一次性加载过大数据会对内存过大消耗;所以,这就引入了es。

ES定义

es=elaticsearch简写, Elasticsearch是一个开源的高扩展的分布式全文检索引擎,它可以近乎实时的存储、检索数据;本身扩展性很好,可以扩展到上百台服务器,处理PB级别的数据。Elasticsearch也使用Java开发并使用Lucene作为其核心来实现所有索引和搜索的功能,但是它的目的是通过简单的RESTful API来隐藏Lucene的复杂性,从而让全文搜索变得简单。ES主要解决问题:

1)检索相关数据; 2)返回统计结果; 3)检索效率高。

ES核心概念

1)Cluster:集群。

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

2)Node:节点。

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

3)Shard:分片。

当有大量的文档时,由于内存的限制、磁盘处理能力不足、无法足够快的响应客户端的请求等,一个节点可能不够。这种情况下,数据可以分为较小的分片。每个分片放到不同的服务器上。 当你查询的索引分布在多个分片上时,ES会把查询发送给每个相关的分片,并将结果组合在一起,而应用程序并不知道分片的存在。即:这个过程对用户来说是透明的。

4)Replia:副本。

为提高查询吞吐量或实现高可用性,可以使用分片副本。 副本是一个分片的精确复制,每个分片可以有零个或多个副本。ES中可以有许多相同的分片,其中之一被选择更改索引操作,这种特殊的分片称为主分片。 当主分片丢失时,如:该分片所在的数据不可用时,集群将副本提升为新的主分片。

5)全文检索。

全文检索就是对一篇文章进行索引,可以根据关键字搜索,类似于mysql里的like语句。 全文索引就是把内容根据词的意义进行分词,然后分别创建索引,例如”你们的激情是因为什么事情来的” 可能会被分词成:“你们“,”激情“,“什么事情“,”来“ 等token,这样当你搜索“你们” 或者 “激情” 都会把这句搜出来。

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

(1)关系型数据库中的数据库(DataBase),等价于ES中的索引(Index)(2)一个数据库下面有N张表(Table),等价于1个索引Index下面有N多类型(Type)(3)一个数据库表(Table)下的数据由多行(ROW)多列(column,属性)组成,等价于1个Type由多个文档(Document)和多Field组成(4)在数据库中的增insert、删delete、改update、查search操作等价于ES中的增PUT/POST、删Delete、改_update、查GET.

如何部署ES?

零配置,开箱即用需要对应的java版本(小弟用的是1.8)百度上搜索下载es相应的版本后,执行bin文件下的.bat文件即可es的更多概念还需小弟更深入的学习,目前焦点着重于es的使用上,所以概念大家百度即可,下篇开始着手于es的实践使用上。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180927G0X49R00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券