本文不介绍如何使用ES(使用ES见:)
1.ES生态圈
ES:
Logstash:数据处理服务程序,解析转换加工数据;
Kibana:数据展示、集群管理,数据可视化、ES管理与监控、报表等;
Beats:轻量级数据采集工具,支持多个数据源采集,占用系统资源少;
ES-Hadoop:连接器,通过 ES-Hadoop,可以充分利用 Hadoop 的大数据处理能力和 Elasticsearch 的快速搜索与分析能力,构建强大的数据处理和分析平台;
其他非官方框架:Flink(开源的实时数据流处理框架)、nifi(数据集成工具)、GrafanaLabs(提供开源的监控、日志管理和数据可视化工具,帮助用户在分布式系统和云原生环境中实现更好的可观测性和性能管理)、presto。。。
2.ES的作用
- 全文搜索:全文索引,支持多种语言分词、中文、英文、数字、特殊符号,应用在企业知识库、电商商品搜索、垂直领域搜索引擎;
- 地图应用:地图位置应用搜索,集成 Geohash算法,支持大规模的地理位置搜索,结合自身的分布式特性,可以满足海量数据Geo检索;
- 向量检索:相似图片、类似语音、问答系统、推荐系统,内置支持Dense Vector数据类型,与多种向量计算产品集成,支持多种向量应用场景;
- 业务系统加速查询:替代关系型数据库,关系型数据库查询性能瓶,分库分表合并查询、海量数据查询、复杂条件组合查询;
- 大数据领域:强大的数据处理能力,提供Hadoop对外的数据查询服务;自有大数据处理能力、聚合、转换、上卷、大规模明细查询;
- 日志平台:统一日志平台,采集所有日志、系统日志、程序日志、业务日志,存储所有类型日志,查询所有日志,分析所有日志;
- 基础监控:指标采集、时序数据,采集基础指标、基于时序数据存储、性能超过时序数据库;
- 安全分析:网络安全分析预测,机器学习算法模型训练,分析预测潜在网络安全风险;
3.ES的核心概念
-
Cluster集群:Elasticsearch天然是分布式,由一个或者多个节点实例组成
-
Node节点:服务程序运行实例
-
Index索引:数据存储逻辑空间
-
Shard分片:数据存储实际逻辑空间,单分片就是完整索引数据
-
Replicate副本:分片数据备份复制,高可用高性能
-
Segment分段:分片数据实际存储空间
-
Docment文档:一条完整数据,等同Mysql一行数据
-
Term词项:单个字段数据拆分成多个独立的词
4.ES的核心算法
- Inverted Index倒排索引:根据内容找到内容所在位置
- Doc Value列式存储:Elasticsearch数据排序/聚合统计(导致修改数据性能差)
- FST有限状态转换:Finite State Transducers 前缀/后缀(模糊匹配)
- Skip List跳表:文档定位跳跃
- BKD Tree多维空间树:简单数值、范围数据(解决倒排不好范围查询的问题)
- RoaringBitmap压缩位图:原始数值压缩、查询结果合并
- TF/IDF/BM25分值计算:文本搜索排序分值计算