行业新闻

一文帮你彻底搞明白ElasticSearch

一文帮你彻底搞明白ElasticSearch

思考:如何检索大规模数据?

例如,当系统数据量达到10亿或100亿时,我们通常从以下角度考虑系统架构:

1)用什么数据库好?(mysql、sybase、oracle、达梦、神通、mongodb、hbase(热备、冷备、异地多活)

4)如何解决检索问题;(数据库代理中间件:mysql-proxy、cobar、Maxscale等。

5)如何解决统计分析问题;(离线近实时)

传统数据库的应对解决方案

对于关系数据,我们通常使用以下或类似的架构来解决查询瓶颈和写入瓶颈:

解决要点:

1)通过主从备份解决数据安全问题;

2)通过数据库代理中间件心跳监测,解决单点故障问题;

3)通过代理中间件将查询句分发到每个slave节点进行查询,并总结结果

11

非关系数据库的解决方案

以mongodb为例,Nosql数据库的其他原理相似:

解决要点:

1)通过副本备份保证数据安全性;

2)通过节点竞选机制解决单点问题;

3)首先从配置库检索分片信息,然后将请求分发到每个节点,最后由路由节点合并总结结果

22

另辟蹊径 text-indent: 0;'>33

1.ES

1)Cluster:集群。

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

2)Node:节点。

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

三、Shard:分片。

当有大量文档时,由于内存限制、磁盘处理能力不足、无法快速响应客户端要求等,节点可能不够。在这种情况下,数据可以分为较小的部分。每个部分都放在不同的服务器上。

当您查询的索引分布在多个片段上时,ES会将查询发送到每个相关片段,并将结果结合在一起,而应用程序不知道片段的存在。也就是说,这个过程对用户来说是透明的。

4)Replia:副本。

分片副本可用于提高吞吐量或实现高可用性。

副本是一个片段的精确复制,每个片段可以有零或多个副本。ES中可以有许多相同的分片,其中一个选择更改索引操作,称为主分片。

当主分片丢失时,如果分片所在的数据不可用,集群将副本升级为新的主分片。

5)全文检索。

全文搜索就是索引一篇文章,可以根据关键词搜索,类似于mysql中的like语句。

全文索引根据单词的意义划分单词,然后分为单词索引,如 text-indent: 0;'>44

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

(2)一个数据库下有N张表(Table),等于一个索引Index下有N多种类型(Type),

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

(4)在一个关系数据库中,schema定义了表、每个表的字段以及表和字段之间的关系。相应地,在ES中:如何建立索引、索引类型、是否保存原始索引JSON文档、是否压缩原始JSON文档、是否需要分词、如何分词等。

(5)在数据库中增加insert、删除delete、更改update、查看search操作等于es中的put/post、删除delete、更改update、查看get。

1.EK

ELK==logstaselaselasencselaselacselarchostaselasearcselarc存储和全检查后,lostastash和rostash:g日志日志处理和GitHub使用ElasticSearch搜索20TB的数据,包括13亿文件和1300亿行代码。

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

3)SoundCloud:Soundd使用Elasticsearch为1.8亿用户提供即时准确的音乐搜索服务

4)百度:目前,百度广泛使用Elasticsearch作为文本数据分析,收集百度所有服务器上的各种指标和用户定制数据,通过多维分析显示各种数据,辅助定位分析例异常或业务水平异常。目前,百度覆盖了220多条业务线(包括casio、云分析、网络联盟预测、文库、直接号码、钱包、风险控制等)。,单个集群最大100台机器,200个节点,导入30个TSE机器。

4.

在实际的项目开发实战中,几乎每个系统都有一个搜索功能。当搜索达到一定程度时,维护和扩展的难度会逐渐增加。因此,许多公司将独立搜索模块,并使用elasticsearch等。

近年来,Elasticsearch发展迅速,超越了其原始的纯搜索引擎角色。现在增加了数据聚合分析(agregation)和可视化特性。如果你有数百万的文档需要通过关键词定位,Elasticsearch绝对是最好的选择。当然,如果你的文档是JSON,你也可以把Elasticsearch作为Nosql数据库,应用Elasticsearch数据聚合分析(agregation)的特点,对数据进行多维分析。

在某些情况下,ES取代了传统的DB

就我个人而言,我认为Elasticsearch作为一个内部存储是好的,效率基本上可以满足,在某些方面取代传统的DB是可以的,前提是你的业务有特殊管理不需要那么详细,因为ES的权限并不完美。

因为我们对ES的应用场景只是一段时间内的数据聚合操作,没有大量的单文档请求(例如,通过通过userid找到用户的文档,类似于NoSQL的应用场景),您需要自己的测试来替换NoSQL。如果我选择,我会尝试用ES来取代传统的NoSQL,因为它的横向扩展机制太方便了。

5.ES的应用场景是什么?

我们通常面临两个问题:

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

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

一线公司ES使用场景:

este,

etttorm

com-zan-taing

4)ES实现站内搜索https://www.wtoutiao.com/p/13bkqiz.html