一: 概念
ElasticSearch是一个基于Lucene的搜索服务器
Lucene:是一套搜索的API,即搜索定义的一些jar包或代码
ES是将Lucene进行了一些封装,提供简化的搜索方式
Lucene
Lucene有两种实现:ElasticSearch和solr,ES先出来,所以在性能方面es高于solr,特别是实时搜索
是一个分布式、高扩展、高实时的搜索与数据分析引擎
基于RESTful web接口
Elasticsearch是用Java语言开发的,并作为Apache许可条款下的开放源码发布,是一种流行的企业级搜索引擎
应用场景
1.搜索:海量数据的查询
2.日志数据分析
3.实时数据分析
mysql和ES的区别
MySQL有事务性,而ElasticSearch没有事务性,所以你删了的数据是无法恢复的。
ElasticSearch没有物理外键这个特性,如果你的数据强一致性要求比较高还是建议慎用
ElasticSearch和MySql分工不同,MySQL负责存储数据,ElasticSearch负责搜索数据。
在现在的架构中,对数据的增删改还是需要使用DB,当操作完之后,再与ES进行数据的同步,搜索查询数据还是要通过es做
核心概念
索引(index)
ElasticSearch存储数据的地方
可以理解成
关系型数据库中的数据库概念
。
映射(mapping)
mapping定义了每个字段的类型、字段所使用的分词器等。
相当于关系型数据库中的表结构
。
文档(document)
Elasticsearch中的最小数据单元,常以json格式显示。
一个document
相当于关系型数据库中的一行数据
。
倒排索引
一个倒排索引由文档中所有不重复词的列表构成
,对于其中每个词,对应一个包含它的文档id列表。
类型(type)
在es之前的版本中,还有一个概念便是表的概念
一种type就像一类表。如用户表、角色表等。在Elasticsearch7.X默认type为_doc
-ES 5.x中一个index可以有多种type。
-ES 6.x中一个index只能有一种type.
-ES 7.x以后,将逐步移除type这个概念,现在的操作已经不再使用,默认_doc