首页 > 数据库 >Elasticsearch知识整理(包含与mongoDb的区别)

Elasticsearch知识整理(包含与mongoDb的区别)

时间:2024-09-25 19:51:48浏览次数:8  
标签:存储 包含 mongoDb 查询 索引 文档 Elasticsearch 数据

Elasticsearch 概念整理

Elasticsearch 是位于 Elastic Stack 核心的分布式搜索和分析引擎。Logstash 和 Beats 有助于收集、聚合和丰富您的数据并将其存储在 Elasticsearch 中。Kibana 使您能够以交互方式探索、可视化和分享对数据的见解,并管理和监控堆栈。

  • Elasticsearch 为所有类型的数据提供近乎实时的搜索分析。无论您拥有结构化或非结构化文本、数字数据还是地理空间数据,Elasticsearch 都能以支持快速搜索的方式高效地存储和索引它。您可以超越简单的数据检索和聚合信息来发现数据中的趋势和模式。随着您的数据和查询量的增长,Elasticsearch 的分布式特性使您的部署能够随之无缝增长。
    在这里插入图片描述

Elasticsearch为什么搜索快

  • Elasticsearch之所以搜索速度快,主要得益于其采用的一系列高效技术和策略。
  1. 分布式存储‌:Elasticsearch通过分布式存储技术,将数据存储在多个节点上,从而减少单个节点的压力,提高整体性能。这种分布式架构可以充分利用集群的计算资源和存储能力,提高查询速度12。
  2. 索引分片‌:Elasticsearch将每个索引划分成多个分片,允许查询操作并行化,从而提高查询速度。每个分片可以独立进行搜索操作,进一步提高了查询的并发性和效率12。
  3. 倒排索引‌:Elasticsearch使用倒排索引这种数据结构,将文档中的每个词与该词出现在哪些文档中进行映射,并存储这些信息。当搜索请求发生时,Elasticsearch可以快速查找包含所有搜索词的文档,从而返回结果12。
  4. 索引优化‌:通过索引优化技术,Elasticsearch可以使查询速度更快。这包括对数据进行预处理,将结果预存储到索引中,避免在查询时重新计算1。
  5. 高效的查询引擎‌:Elasticsearch使用了高效的查询引擎,支持各种类型的查询,并对复杂查询提供了优化策略,从而提高查询速度1。
  6. 异步请求处理‌:Elasticsearch使用了异步请求处理机制,能够在请求到达时立即返回,避免长时间的等待,提高用户体验1。
  7. 内存存储技术‌:ES使用了内存存储技术,能够在读写数据时大大减少磁盘访问次数,提高数据存储和查询效率1。
  8. 缓存和缓存预热‌:Elasticsearch内置了各种类型的缓存,如字段数据缓存、过滤器缓存等,用于加速查询。此外,还支持缓存预热,即在查询之前将数据加载到缓存中,从而减少查询时间3。
  9. 使用近似搜索算法‌:Elasticsearch支持近似搜索算法,如布隆过滤器、Levenshtein距离等,可以在某种程度上减少倒排索引的检索范围,提高查询效率3。
    这些技术和策略共同作用,使得Elasticsearch在处理大量数据和高并发查询时,仍然能够保持快速响应和高性能,满足用户对实时、高效查询的需求12。
    构建倒排索引的过程如下:
    文档解析:
  10. 将每个文档拆分成单个的词语(词项)。
  • 可以使用分词器和词法分析器来处理文本。
    记录词语和文档的映射:
  1. 对于每个词语,记录其所在的文档ID。
  2. 如果词语在文档中多次出现,可以记录其词频和具体位置(偏移量)。
    构建倒排列表:
  3. 为每个词语创建一个倒排列表。
  4. 将包含该词语的所有文档ID加入到倒排列表中。
    倒排索引的查询:
    使用倒排索引进行查询时,流程如下:
  5. 查询解析:
  • 将查询字符串解析成单个词语。
  1. 查找倒排列表:
  • 对于每个查询词语,从词典中找到对应的倒排列表。
  1. 合并结果:
  • 根据查询类型(如AND、OR等),合并多个倒排列表以得到最终的结果文档集合。

优势:
18. 高效检索:倒排索引允许快速定位包含特定词语的文档,比起逐一扫描所有文档效率高得多。
19. 灵活查询:支持多种复杂查询,如布尔查询、短语查询和范围查询。
20. 可扩展性:适用于大规模文档集合,能够处理大量数据和高并发查询

ES和MongoDB的主要区别在于它们的设计目标、应用场景、数据存储方式以及特性。‌‌

比较名称esmongoDb
数据库类型ES是一个基于Lucene搜索引擎构建的分布式文档存储数据库MongoDB是一个面向文档存储的数据库
数据存储方式ES使用分片和副本机制进行数据存储,支持分布式架构,可以扩展到数百台服务器,支持海量数据的存储和检索MongoDB采用分片机制进行数据存储,支持水平扩展,可以轻松地扩展到数百台服务器,支持海量数据的存储和检索
特性ES支持全文检索和近实时搜索,可以对海量数据进行复杂的搜索和分析,具有近乎实时的索引和查询能力,支持多语言处理和丰富的查询语法MongoDB具有面向集合存储、模式自由、动态查询、完整索引支持等特点,支持二进制数据及大型对象存储,支持复制和故障恢复,自动分片以支持云级别的伸缩性
数据库存储结构ES是一个全文搜索引擎,数据以索引方式存储,每个文档被索引,以便进行快速全文搜索MongoDB数据以BSON(二进制JSON)格式存储,每个文档可以包含不同的字段和数据类型
数据查询ES则提供了更强大的全文搜索分析能力,支持全文搜索、模糊搜索、聚合、分析和自定义查询MongoDB提供了类似传统SQL数据库的查询语言,可以进行灵活的查询和聚合操作
数据一致性ES则采用了分布式一致性模型,写操作在主分片上执行并复制到其他分片MongoDB在默认配置下采用强一致性模型,写操作在主节点上执行并复制到副本集中的所有节点
适用场景ES适用于需要进行全文搜索和实时分析的应用,比如日志分析、电商搜索和实时监控等,适合存储和搜索大量的文本数据MongoDB适用于大部分Web应用程序,特别是需要灵活数据模型高度可扩展性的场景,更适合存储和查询结构化数据
数据可扩展性ES支持水平扩展,可以通过添加更多的节点来提高搜索和分析性能MongoDB支持水平扩展,可以通过添加更多的节点来提高处理能力和存储容量

: ES和MongoDB虽然都是文档存储型数据库,但它们的设计目标、应用场景、数据存储方式以及特性有所不同。选择使用哪种数据库应根据具体需求来决定。
在这里插入图片描述

标签:存储,包含,mongoDb,查询,索引,文档,Elasticsearch,数据
From: https://blog.csdn.net/Luluya__/article/details/142494244

相关文章

  • InfluxQL语法与用法及其与SQL和MongoDB的区别
    InfluxQL是一种用于InfluxDB的查询语言,语法上与SQL相似,但专为时间序列数据优化。它使用SELECT、FROM、WHERE等关键字来查询数据。与SQL相比,InfluxQL有更强的时间维度处理功能,例如使用GROUPBYtime()来聚合数据。与MongoDBAPI相比,InfluxQL更注重数据的时间序列特性,而MongoDB则专注......
  • Elasticsearch 实战应用详解
    Elasticsearch是一个分布式搜索和分析引擎,广泛应用于各种场景,如全文搜索、日志与事件数据分析、实时数据流处理等。本文将详细介绍如何在实际项目中使用Elasticsearch,包括安装配置、基本操作、高级查询及优化策略。1.安装和配置安装Elasticsearch通过官方包管理器安装......
  • node/expressjs 连接与操作 MongoDB
    MongoDB 的安装、配置、启动、常见指令等,详见上一节“mongoDB简介” 以下将讲述 node/expressjs 与 mongoDB 的交互——连接与操作数据库 mongoDB注释:以下示例是采用express官网的生成器初始化项目的。数据库 mongoDB的操作运用的是mongoose插件, mong......
  • mongoDB 简介
    参考文档 https://www.runoob.com/mongodb/mongodb-tutorial.htmlmongoDB菜鸟教程https://mongodb.net.cn/manual/mongoDB中文官网 1. mongoDB 概述MongoDB是一个流行的开源文档型数据库,它使用类似JSON的文档模型存储数据,这使得数据......
  • Docker 运行 MongoDB
    Docker运行MongoDB实验环境宿主机:CentOSStreamrelease9Docker:DockerEngine27.3.1MongoDB:7.0.14Mongosh;2.3.1配置文件mongod.conf[karma@localhostkarmamongodb]$catmongod.conf|grep-vE"#|^$"storage:dbPath:/var/lib/mongodbsystemLog:des......
  • 【Elasticsearch系列七】索引 crud
    ......
  • 【Elasticsearch系列十三】Elastic Stack
    ......
  • ElasticSearch安装分词器与整合SpringBoot
    ElasticSearch安装分词器与整合SpringBoot如果还没安装的点击安装ElasticSearch查看怎么安装分词器1.分词器在Elasticsearch中,分词器(Tokenizer)是分析器(Analyzer)的一部分,它的主要职责是将文本输入(如字符串)分割成一系列的词元(tokens)。这些词元是搜索和索引的基础单元。......
  • ElasticSearch的安装与使用
    ElasticSearch的安装与使用docker安装docker进行安装Elasticsearch1.拉取镜像dockerpullelasticsearch:7.6.22.创建实例mkdir-p/docker/elasticsearch/configmkdir-p/docker/elasticsearch/dataecho"http.host:0.0.0.0">>/docker/elasticsearch/config/......
  • 我的网站集成ElasticSearch初体验
    我的网站集成ElasticSearch初体验   最近,我给我的网站(https://www.xiandanplay.com/)尝试集成了一下es来实现我的一个搜索功能,因为这个是我第一次了解运用elastic,所以如果有不对的地方,大家可以指出来,话不多说,先看看我的一个大致流程   这里我采用的sdk的版本是El......