目录
- 介绍说明
- 全文检索
- 倒排索引
- ES和Solr的对比
- 数据结构(存储非结构化数据)
介绍说明
基于Apache Lucene构建的开源分布式搜索和分析引擎,专为处理大规模数据而设计。
java语言开发的web项目
全文检索
定义:一种非结构化数据的搜索方式
结构化数据:固定长度固定格式,比如数据库中的字段
非结构化数据:格式长度不固定,比如电商网站商品详情(包含文字,图片等)
搜索方式:全文检索通过建立倒排索引加快搜索效率
倒排索引
索引:提取出一部分数据信息,并组成一定的数据结构,使得用户可通过此结构进行搜索。
正排索引:以数据库中的主键建立正排索引
倒排索引:在非结构化数据中,根据数据中的关键词建立索引,并建立指向文档。
倒排索引创建流程
ES和Solr的对比
特性 | Solr | Elasticsearch |
---|---|---|
分布式管理 | 利用Zookeeper进行分布式管理 | 自身带有分布式协调管理功能 |
数据格式支持 | 支持更多格式的数据 | 仅支持json文件格式 |
功能提供 | 官方提供的功能更多 | 本身更注重于核心功能,高级功能多由第三方插件提供 |
搜索应用表现 | 在传统的搜索应用中表现好于Elasticsearch | 在处理实时搜索应用时效率明显高于Solr |
市场占有率 | - | 越来越高,受到更多公司的青睐 |
Spring支持 | Spring Data Solr曾受支持 | Spring从2020年起停止Spring Data Solr的维护,转向Elasticsearch |
数据结构(存储非结构化数据)
7.0之前有type后续,8.0则完全移除type这个概念。
JAVA项目 | Elasticsearch (ES) | MySQL |
---|---|---|
实体类(Entity Class) | 索引(Index)* | 表(Table) |
对象(Object) | 文档(Document) | 行(Row) |
属性(Attribute/Field) | 字段(Field) | 列(Column) |