Elasticsearch分布式搜索基础

Eslasticsearch时一款非常强大的开源搜索引擎,可以帮助我们从海量的数据中快速找到需要的内容。Elasticsearch结合kibana/Logstash/Beats,也就是elastic stack(ELK)。被广泛引用于日志数据分析和实时监控领域。

Elasticsearch是核心,负责存储搜索和分析数据。kibana是可视化工具。Logstash和Beats是数据抓取,后面三个可以用其他技术替代。

Ela底层实现是Lucene,是一个java语言的搜索引擎库,是Appache公司的项目,于DougCutting于1999年研发。

Lucene它的优势是易扩展(可以在基础上开发),高性能(基于倒排索引)。

Lucene缺点是只限于java,学习曲线陡峭,不支持水平扩展需要二次开发。

Ela支持分布式,可水平扩展,提供Restful接口,可以被任何语言调用。

正向索引和倒排索引

传统数据库如mysql采用正向索引,通过id创建索引形成B+树,这是正向索引。如果搜索标题字段,模糊匹配,采用逐条扫描数据判断是否含有田间,若果有就存到结果集里面。。否则就丢弃,数据有多少条扫描多少次。

倒排索引形成新的表,词条和文档id

文档document:每条数据就是一个文档。

词条term:文档按照语义分成词语。

 Elasticsearch是面向文档存储的,可以是数据库的数据,文档数据会被序列化为json格式后存储在elasticsearch中。

索引:相同类型文档的集合

映射:索引中文档的字段约束信息,类似表的结构约束。

 Mysql:更擅长事务类型操作,可以保证数据的安全性和一致性。

Elasticsearch:擅长海量数据的搜索分析和计算。

 

posted @ 2021-11-11 13:59  zuiAI0658  阅读(126)  评论(0)    收藏  举报