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:擅长海量数据的搜索分析和计算。

浙公网安备 33010602011771号