基于 Apache Lucene 构建的分布式搜索和分析引擎、可扩展数据存储和矢量数据库。
适用场景
- 从海量数据中检索出少量数据
- 对指标进行统计计算
- 利用Kibana/Grafana等工具进行可视化分析
不适用的场景
- 拉取大量原始数据
- 经常对数据进行UPDATE/DELETE
- 作为数据仓库进行永久存储数据
- 写入实时性要求非常高(<1s)的场景
基础知识
索引
索引是 Elasticsearch 中的基本存储单元,是用于存储具有相似特征的数据的逻辑命名空间。
相当于MySQL的库表
文档
Elasticsearch 以 JSON 文档的形式序列化和存储数据。文档是一组字段,这些字段是包含数据的键值对。每个文档都有一个唯一的 ID,您可以创建该 ID 或让 Elasticsearch 自动生成该 ID。
相当于MySQL的表主键
文档示例
{ “_index” :“my-first-elasticsearch-index” ,“_id” :“DyFpo5EBxE8fzbb95DOa” , “ _version” :1 ,“_seq_no” :0 ,“_primary_term” :1 ,“found” :true ,“_source” :{ “email” :“john@smith.com” ,“first_name” :“John” ,“last_name” :“Smith” ,“info” :{ “bio” :“生态战士和弱者的捍卫者” ,“age” :25 ,“interests” :[ “海豚” ,“鲸鱼” ] },“join_date” :“2024/05/01” } }
特点
ES采用倒排索引机制,通过属性值确定数据记录位置,有效避免全表扫描问题
Java应用结构
待续
学习文档
ElasticSearch之倒排索引_elasticsearch倒排索引-CSDN博客