`

elasticsearch原理之搜索与聚合之谜

 
阅读更多

满足海量数据实时聚合要求的数据库不多,比较常见的有这么几种:

其中Elasticsearch是目前市场上比较很少有的,能够在检索加载和分布式计算三个方面都做得一流的数据库。而且是开源并且免费的。它使用了很多技术来达到飞一般的速度。这些主要的优化措施可以列举如下。

  • Lucene的inverted index可以比mysql的b-tree检索更快。
  • 在 Mysql中给两个字段独立建立的索引无法联合起来使用,必须对联合查询的场景建立复合索引。而lucene可以任何AND或者OR组合使用索引进行检索。
  • Elasticsearch支持nested document,可以把一批数据点嵌套存储为一个document block,减少需要索引的文档数。
  • Opentsdb不支持二级索引,只有一个基于hbase rowkey的主索引,可以按行的排序顺序scan。这使得Opentsdb的tag实现从检索效率上来说很慢。
  • Mysql 如果经过索引过滤之后仍然要加载很多行的话,出于效率考虑query planner经常会选择进行全表扫描。所以Mysql的存储时间序列的最佳实践是不使用二级索引,只使用clustered index扫描主表。类似于Opentsdb。
  • Lucene 从 4.0 开始支持 DocValues,极大降低了内存的占用,减少了磁盘上的尺寸并且提高了加载数据到内存计算的吞吐能力。
  • Lucene支持分segment,Elasticsearch支持分index。Elasticsearch可以把分开的数据当成一张表来查询和聚合。相比之下Mysql如果自己做分库分表的时候,联合查询不方便。
  • Elasticsearch 从1.0开始支持aggregation,基本上有了普通SQL的聚合能力。从 2.0 开始支持 pipeline aggregation,可以支持类似SQL sub query的嵌套聚合的能力。这种聚合能力相比Crate.io,Solr等同门师兄弟要强大得多。

查询效率之快的三个重要技术:

mmap来加载单独需要索引的列(memory mapped byte buffer);

各种posting list的压缩方案来压缩;

Roaring Bitmap数据结构做逻辑操作;

 

参考:

1、elasticsearch原理篇, 文章从检索、加载、分布式聚合三个方面,深入的剖析了es比mysql、opentsdb等数据查询、聚合更快速的原因;

1.1、时间序列数据库的秘密(1)—— 介绍
http://www.infoq.com/cn/articles/database-timestamp-01
1.2、时间序列数据库的秘密(2)——索引
http://www.infoq.com/cn/articles/database-timestamp-02
1.3、时间序列数据库的秘密(3)——加载和分布式计算
http://www.infoq.com/cn/articles/database-timestamp-03

 

 

 

 

 

 

分享到:
评论

相关推荐

    Elasticsearch实战与原理解析 源代码.zip

    这份"**Elasticsearch实战与原理解析 源代码**"的压缩包文件提供了关于这个强大工具的实践案例和源代码,旨在帮助用户深入理解和掌握Elasticsearch的核心功能和工作原理。 首先,我们要了解Elasticsearch的基本概念...

    Elasticsearch聚合探索:桶聚合与度量聚合的区分与应用

    Elasticsearch的聚合功能允许用户对数据进行汇总和分析,其中桶聚合和度量聚合是两种常用的聚合类型。本文将详细探讨这两种聚合的区别及其应用场景。 桶聚合和度量聚合在Elasticsearch中扮演着不同的角色,它们共同...

    elasticsearch聚合值过滤

    在 Elasticsearch(ES)中,聚合(Aggregations)是一种强大的数据汇总工具,允许用户对索引中的数据进行分组和统计分析。而“elasticsearch聚合值过滤”是ES聚合功能的一个高级应用场景,它允许我们根据聚合计算出...

    elasticsearch聚合后分页

    方法如果传总页数了,es就不用查询总页数,直接通过开始位置到结束位置取数即可

    elasticsearch脚本实现先聚合后过滤

    在 Elasticsearch (ES) 中,聚合(Aggregations)是一种强大的功能,允许我们对索引中的数据进行统计分析,如求平均值、计数、分桶等。而在某些场景下,我们可能需要在聚合的基础上进一步过滤结果,即基于聚合的结果...

    《ElasticSearch入门到实战》电子书,从入门到进阶实战项目的教程文档,框架SpringBoot框架整合ES.zip

    4. **聚合分析**:学习如何使用 Elasticsearch 的聚合功能进行数据统计和分析,如术语聚合、范围聚合、统计聚合等。 5. **映射与分析**:了解字段映射的重要性,以及如何设置分析器进行文本分词,以满足不同的搜索...

    基于SpringBoot+elasticsearch的操作项目,包含各种es的操作(插入记录、精准搜索、模糊搜索、聚合查询等)

    基于SpringBoot+elasticsearch的操作项目,包含各种es的操作(插入记录、精准搜索、模糊搜索、聚合查询等) 基于SpringBoot+elasticsearch的操作项目,包含各种es的操作(插入记录、精准搜索、模糊搜索、聚合查询等...

    Elasticsearch基础架构与原理 数据索引与文档管理 Elasticsearch查询语言基础 高级搜索技巧与过滤 集群管

    Elasticsearch基础架构与原理 数据索引与文档管理 Elasticsearch查询语言基础 高级搜索技巧与过滤 集群管理与优化 数据映射与类型 分布式搜索与分析 Elasticsearch安全机制 监控与日志分析 数据导入与导出策略 ...

    ElasticSearch工作原理.pptx

    本文章以PPT的形式,详细展示了elastic search的工作原理、存储、及注意事项,如shard分片原理及设计、相关插件、与solr比较

    Elasticsearch原理解析

    了解并掌握以上Elasticsearch的核心原理,将有助于你在实际项目中更好地利用这一强大的搜索工具,解决复杂的数据检索和分析问题。无论是日志分析、实时监控,还是构建全文搜索引擎,Elasticsearch都能提供强大支持。

    elasticsearch 8.11.3 windows安装包

    Elasticsearch 是一个分布式、高扩展、高实时的搜索与数据分析引擎。它能很方便的使大量数据具有搜索、分析和探索的能力。充分利用Elasticsearch的水平伸缩性,能使数据在生产环境变得更有价值。Elasticsearch 的...

    ES查询客户端,elasticsearch可视化工具 elasticsearch查询客户端

    Elasticsearch查询客户端是用于与ES服务器通信的软件,它们提供了多种语言的API,允许开发者以编程方式执行索引、搜索、更新和删除等操作。常见的Elasticsearch客户端包括: - **Jest**:一个轻量级的Java REST...

    Elasticsearch原理解析.ppt

    Elasticsearch原理解析的入门知识培养,原理解析介绍,示例

    Elasticsearch聚合 之 Terms

    Elasticsearch聚合之Terms Elasticsearch中的Terms聚合是一种常用的聚合方式,用于对文档中的某个字段进行分组统计。Terms聚合可以对文档中的某个字段进行分组,并统计每个组中的文档数量。 在Elasticsearch中,...

    elasticsearch windows 7.10.0 解压安装包

    Elasticsearch 是一个分布式、高扩展、高实时的搜索与数据分析引擎。它能很方便的使大量数据具有搜索、分析和探索的能力。充分利用Elasticsearch的水平伸缩性,能使数据在生产环境变得更有价值。Elasticsearch 的...

    elasticsearch windows 7.17.16 解压安装包

    Elasticsearch 是一个分布式、高扩展、高实时的搜索与数据分析引擎。它能很方便的使大量数据具有搜索、分析和探索的能力。充分利用Elasticsearch的水平伸缩性,能使数据在生产环境变得更有价值。Elasticsearch 的...

    Elasticsearch 技术解析与实战.zip

    前言 第1章 Elasticsearch入门 1 1.1 Elasticsearch是什么 1 1.1.1 Elasticsearch的历史 2 1.1.2 相关产品 3 1.2 全文搜索 3 1.2.1 Lucene介绍 4 1.2.2 Lucene倒排索引 4 1.3 基础知识 6 1.3.1 Elasticsearch术语及...

    ElasticSearch 过滤聚合结果

    ElasticSearch对数据进行聚合并对聚合结果值进行过滤查询

    elasticsearch 7.17.16 linux 解压安装包

    Elasticsearch 是一个分布式、高扩展、高实时的搜索与数据分析引擎。它能很方便的使大量数据具有搜索、分析和探索的能力。充分利用Elasticsearch的水平伸缩性,能使数据在生产环境变得更有价值。Elasticsearch 的...

    Elasticsearch-深入理解索引原理

    Elasticsearch-深入理解索引原理 Elasticsearch 中索引(Index)的概念是非常重要的,它是 Elasticsearch 存储数据的基本单元。索引是一个具有类似特性的文档的集合,类比传统的关系型数据库领域来说,索引相当于 ...

Global site tag (gtag.js) - Google Analytics