Elasticsearch(一)

Elasticsearch(一)_第1张图片

Transport | Elasticsearch Guide [7.6] | Elastic

一、Elasticsearch概述

Elasticsearch(一)_第2张图片

1.1 Elasticsearch是什么

Elasticsearch是一个(近乎)实时的分布式搜索和分析引擎。它可以帮助你用前所未有的速度去处理大规模数据, 它不但稳定、可靠、快速,而且也具有良好的水平扩展能力,是专门为分布式环境设计的,它可以用于全文搜索,结构化搜索以及分析,当然你也可以将这三者进行组合。Elasticsearch是一个建立在全文搜索引擎 Apache Lucene 基础上的搜索引擎,可以说Lucene是当今最先进,最高效的全功能开源搜索引擎框架.

https://www.elastic.co

1.2 Elasticsearch的特性

ElasticSearch是基于Lucene开发的分布式搜索框架,包含如下特性:

  1. 分布式索引、搜索。
  2. 索引自动分片、负载均衡。
  3. 自动发现机器、组建集群。
  4. 支持Restful 风格接口。
  5. 配置简单等。
  6. 海量数据的存储。

1.3 Elasticsearch框架图

Elasticsearch(一)_第3张图片

1.4 Elasticsearch典型使用案例

  • 维基百科使用Elasticsearch来进行全文搜做并高亮显示关键词,以及提供search-as-you-type、did-you-mean等搜索建议功能。
  • 英国卫报使用Elasticsearch来处理访客日志,以便能将公众对不同文章的反应实时地反馈给各位编辑。
  • StackOverflow将全文搜索与地理位置和相关信息进行结合,以提供more-like-this相关问题的展现。
  • GitHub使用Elasticsearch来检索超过1300亿行代码。
  • 每天,Goldman Sachs使用它来处理5TB数据的索引,还有很多投行使用它来分析股票市场的变动。
  • 国内大厂很多都是基于Es实现搜索,比如苏宁、京东等

1.5 Lucene

Lucene是Apache Jakarta家族中的一个开源项目,是一个开放源代码的全文检索引擎工具包,但它不是一个完整的全文检索引擎,而是一个全文检索引擎的架构,提供了完整的查询引擎、索引引擎和部分文本分析引擎。

Lucene提供了一个简单却强大的应用程式接口,能够做全文索引和搜寻。在Java开发环境里Lucene是一个成熟的免费开源工具,是目前最为流行的基于 Java 开源全文检索工具包

数据总体分为两种:

  • 结构化数据:指具有固定格式或有限长度的数据,如数据库、元数据等。
  • 非结构化数据:指不定长或无固定格式的数据,如邮件、word文档等磁盘上的文件。

对于结构化数据的全文搜索很简单,因为数据都是有固定格式的,例如搜索数据库中数据使用SQL语句即可。

对于非结构化数据,有以下两种方法:

  1. 顺序扫描法(Serial Scanning)
  2. 全文检索(Full-text Search)

顺序扫描法如果要找包含某一特定内容的文件,对于每一个文档,从头到尾扫描内容,如果此文档包含此字符串,则此文档为我们要找的文件,接着看下一个文件,直到扫描完所有的文件,因此速度很慢。

全文检索将非结构化数据中的一部分信息提取出来,重新组织,使其变得具有一定结构,然后对此有一定结构的数据进行搜索,从而达到搜索相对较快的目的。这部分从非结构化数据中提取出的然后重新组织的信息,我们称之索引。

例如字典的拼音表和部首检字表就相当于字典的索引,通过查找拼音表或者部首检字表就可以快速的查找到我们要查的字。

这种先建立索引,再对索引进行搜索的过程就叫全文检索(Full-text Search)

1.6 Elsaticsearch的数据结构

Es对数据的存储采用是:

Index(索引)------Mysql(Table)

Document(文档)-------Mysql(Table中一行数据)

选择索引(Es7.0后 ,彻底遗弃type,只有索引和文档),存储的数据就叫文档

一个索引只存储一种类型的数据

1.7 Elasticsearch总结

ES可以实现海量数据的存储(PB级别)、实现快速搜索(倒排索引)、实现统计分析(热词分析)

基于ES可以实现全站搜索、海量数据存储

高并发下的海量数据的存储方案:

Elasticsearch(一)_第4张图片

 

你可能感兴趣的:(elasticsearch,elasticsearch,lucene)