Elasticsearch是做什么的?

server/2024/10/22 1:31:34/

初识elasticsearch

官方网站:Elasticsearch:官方分布式搜索和分析引擎 | Elastic

Elasticsearch是做什么的?

Elasticsearch 是一个分布式搜索和分析引擎,专门用于处理大规模数据的实时搜索、分析和存储。它基于 Apache Lucene 构建,能够快速、高效地执行全文搜索、结构化搜索以及数据分析任务。由于其强大的功能,Elasticsearch 常用于以下几种场景:

1. 全文搜索
Elasticsearch 提供快速、精确的全文搜索,支持复杂查询如模糊匹配、短语搜索、词条权重,广泛用于内容管理系统、电子商务、社交平台等。

2. 数据分析
通过聚合功能,Elasticsearch 可高效进行实时数据分析,支持多维聚合查询,适用于日志分析、业务数据分析等场景。

3. 日志与监控
结合 Elastic Stack(Logstash、Kibana),Elasticsearch 实现实时日志采集、分析和可视化,常用于系统监控、错误检测等。

4. 数据存储
作为分布式文档存储,Elasticsearch 可水平扩展,处理海量数据,保证高可用性和故障冗余。

5.地理位置查询
支持地理空间查询,适用于地图应用、物流、外卖等基于位置的服务场景。

核心特点

倒排索引:Elasticsearch 使用倒排索引来快速查找文档中包含特定词语的条目,特别适合全文搜索场景。

分布式架构:它天生支持水平扩展,允许在集群中分布和存储数据,保证性能和高可用性。

实时性:数据索引和搜索可以在毫秒级内完成,非常适合需要实时响应的数据查询场景。

RESTful API:通过简单的 RESTful API 进行操作,便于与其他系统集成。

典型应用场景

  1. 搜索引擎:用于内容搜索、产品搜索(如电商网站)、文档搜索等。
  2. 日志分析:通过 Elastic Stack(包括 Logstash 和 Kibana),构建日志管理和监控系统。
  3. 推荐系统:电商、流媒体、社交平台等使用 Elasticsearch 进行个性化推荐。
  4. 实时数据分析:企业实时分析海量数据,用于业务决策。

倒排索引是什么?和MySQL数据库有什么不同?

倒排索引(Inverted Index)是一种数据结构,广泛用于全文搜索引擎中。它的主要作用是将文档与其包含的单词进行关联,从而实现快速的文本检索。

基本原理:

        文档与词汇表的映射:倒排索引将每个单词(或词项)映射到包含该单词的文档列表中。相比于传统的正排索引(即存储文档到词汇的映射),倒排索引更加高效。

        结构:倒排索引通常包括两个主要部分:词汇表和文档列表。

假设有三个文档:

        文档1:我 爱 编程

        文档2:我 爱 学习

        文档3:编程 很有趣

构建倒排索引后的结构如下:

倒排索引与 MySQL 数据库的不同:

  • 数据存储结构

    • 倒排索引:主要用于存储词项与文档之间的映射,更加适合文本搜索。
    • MySQL:使用行或列存储数据,通常是基于表的关系型数据库。
  • 查询性能

    • 倒排索引:在处理全文搜索时,可以快速查找包含特定词项的所有文档,支持复杂的查询。
    • MySQL:虽然支持索引(如B树索引),但在处理复杂的文本搜索时性能不如倒排索引。
  • 更新效率

    • 倒排索引:对于频繁更新的文档,重建索引的开销较大。
    • MySQL:支持行级更新,但对于大量数据的复杂查询,性能可能下降。

倒排索引的搜索流程如下(以搜索"华为手机"为例),如图:

流程描述:

1.用户输入条件"华为手机"进行搜索。

2.对用户输入条件分词,得到词条:华为手机

3.拿着词条在倒排索引中查找(由于词条有索引,查询效率很高),即可得到包含词条的文档id:1、2、3

4.拿着文档id到正向索引中查找具体文档即可(由于id也有索引,查询效率也很高)。


http://www.ppmy.cn/server/133764.html

相关文章

【MySQL】索引的机制、使用

在学习索引知识之前,我们可以先了解一下什么是索引。实际上,索引就是数据库中一个或多个列存储的结构,能够支持数据库管理系统在不扫描整张表的情况下也能查询到数据行,能够大大提升查询效率。举个例子,我们想要找到一…

暴露在公网的linux服务器提高安全性的几种方式

目录 一、提高linux服务器安全性的原因 1、数据保护 2、业务连续性 3、防止恶意软件 4、防止内部威胁 5、应对新威胁 二、具体操作 1、禁止ssh的root远程访问 2、修改root访问密码 3、修改ssh访问端口 4、修改数据库默认端口 5、禁止数据库root远程访问 6、修改防火墙策略 三…

Android——发送彩信

跳转到相册选择图片 btn_jump.setOnClickListener(new View.OnClickListener() {Overridepublic void onClick(View view) {// 跳转到系统相册选择图片并返回Intent intent new Intent(Intent.ACTION_GET_CONTENT);// 设置图片类型为图片类型intent.setType("image/*&quo…

【c++ arx 选项板2】

static void xlArx_gmenu2(void) {//007 创建面板集if (!g_pMyPaletteSet){// 创建palette setg_pMyPaletteSet = new CMyPaletteSet

01 视频捕获

1.视频捕获 视频捕获,作为数字视频处理的首要步骤,涉及到将模拟视频信号转换为数字数据流,进而在计算机或其他数字设备上进行处理、存储和传输。本章节将深入探讨视频捕获的基本概念、流程,以及空间采样、时序采样和帧场转换等关…

【高阶数据结构】揭开红黑树‘恶魔’的面具:深度解析底层逻辑

高阶数据结构相关知识点可以通过点击以下链接进行学习一起加油!二叉搜索树AVL树 大家好,我是店小二,欢迎来到本篇内容!今天我们将一起探索红黑树的工作原理及部分功能实现。红黑树的概念相对抽象,但只要我们一步步深入…

记,项目解决

mongodb insertOrUpdate filter : bson.M{"_id": objectId} update : bson.M{"$set": bson.M{"name": "Updated Name","age": 30,}, }opts : options.FindOneAndUpdate().SetUpsert(true). // 没有匹配文…

Python编程基础入门:从风格到数据类型再到表达式

前期已经详细介绍了环境搭建:PycharmPython、VsCodePython Python编程基础入门:从风格到数据类型再到表达式 在编写Python程序时,理解其基础结构和语法是每个初学者的必修课。这篇文章将带你深入了解Python的基本编程风格、数据类型、类型转…