【ElasticSearch(一)】ElasticSearch简介和基本概念

【ElasticSearch(一)】ElasticSearch简介和基本概念



一、什么是 Elasticsearch

Elasticsearch 是一个分布式的开源搜索和分析引擎,适用于所有类型的数据,包括文本、数字、地理空间、结构化和非结构化数据。

Elasticsearch 在 Apache Lucene 的基础上开发而成,由 Elasticsearch N.V.(即现在的 Elastic)于 2010 年首次发布。Elasticsearch 以其简单的 REST 风格 API、分布式特性、速度和可扩展性而闻名,是 Elastic Stack 的核心组件;Elastic Stack 是适用于数据采集、充实、存储、分析和可视化的一组开源工具。人们通常将 Elastic Stack 称为 ELK Stack(代指 Elasticsearch、Logstash 和 Kibana),目前 Elastic Stack 包括一系列丰富的轻量型数据采集代理,这些代理统称为 Beats,可用来向 Elasticsearch 发送数据。


官方文档:https://www.elastic.co/guide/en/elasticsearch/reference/7.14/getting-started.html

二、MySql与ElasticSearch

MySql专攻于数据的持久化存储与管理,也就是CRUD。

ElasticSearch更善于百万数据量的检索,mysql在这样的场景下检索太慢。

三、Elasticsearch 的用途是什么

Elasticsearch 在速度和可扩展性方面都表现出色,而且还能够索引多种类型的内容,这意味着其可用于多种用例:

  • 应用程序搜索
  • 网站搜索
  • 企业搜索
  • 日志处理和分析
  • 基础设施指标和容器监测
  • 应用程序性能监测
  • 地理空间数据分析和可视化
  • 安全分析
  • 业务分析

四、底层实现

Elastic的底层是开源库 Lucene,但是你没法直接用 scene,必须自己写代码去调用它的接口。 Elastic是 Lucene的封装,提供了 REST API的操作接口,开箱即用。

REST API:天然的跨平台。

五、基本概念


  1. 索引(index)
    动词,相当于MySQL的insert

名词,相当于MySQL的Datebase

  1. 类型(Type)
    在 Index(索引)中,可以定义一个或多个类型。类似于 MySQL中的 Table;每一种类型的数据放在一起;
  • PS:在ES 7中Type已经废除了,所有文档直接存在索引下。
  1. 文档(Document)
    保存在某个索引(Index)下,某种类型(Type)的一个文档(Document),文档是 JSON格式的。一个Document就像是 MySQL中的某个 Table里面的一条数据。

六、倒排索引

为什么ElasticSearch得以在百万数据量中快速检索出我们想要的内容呢?

就是因为在ES中,存储数据的同时,维护了一张倒排索引表。

如何得到倒排索引表,并在其中搜索的,过程如下:

  • 得到倒排索引表,需要先分词:将要保存的记录拆分为单词

  • 得到一张倒排索引表

  • 将要检索的整句也拆分为单词,在刚刚得到的倒排索引表中匹配

  • 根据相关性得分进行结果排序,选取得分最高的

    相关性得分:整句1被拆分为4个单词,匹配到了2个,2/4。句子2被拆分为2个单词,匹配到了2个,2/2。那么,整句2相关性更高。


举个例子:

  • 现在保存以下记录

    1-红海行动

    2-探索红海行动

    3-红海特别行动

    4-红海记录篇

    5-特工红海特别探索


    得到这样一张倒排索引表:

  • 要检索关键字:红海行动

    拆分为了单词:红海、行动

  • 相关记录有1,3,4,5

    选取相关性得分最高的:1相关性2/2,3相关性2/3,4相关性1/2,5相关性2/4。所以1相关性最高。

posted @ 2021-08-24 13:45  musecho  阅读(219)  评论(0编辑  收藏  举报