Elasticsearch
什么是eleasticsearch
##
1.eleasticsearch是一款非常强大的开源搜索引擎,可以帮助我们从海量的数据中快速找到需要的内容。
2. eleasticsearch结合kibaba、Logstash、Beats,也就是eleastic stack(ELK)。被广泛应用在日志数据分析、实时监控等领域。
3.eleasticsearch是elastic stack的核心,负责存储、搜索、分析数据。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6uRH3anW-1659595368765)(en-resource://database/654:1)]
elasticsearch采用倒排索引:
- 文档(document):每条数据就是一个文档
- 词条 (term):文档按照语义分成的词语
举例:正向索引
id | title | price |
---|---|---|
1 | 小米手机 | 3499 |
2 | 华为手机 | 4399 |
3 | 小米手环 | 299 |
而倒排索引:词条是不重复的,而文档id碰到重复的只需要记录id就可。
对文档内容进行分词,对词条创建索引,并记录词条所在文档的信息。查询时先根据词条查询到文档id,再获取文档。
词条(term) | 文档id |
---|---|
小米 | 1,3 |
手机 | 1,2 |
华为 | 2 |
手环 | 3 |
搜索时:
文档
elasticsearch是面向文档存储的,可以是数据库中的一条商品数据,一个订单信息。
文档数据会被序列化为json格式后存储在elasticsearch中。
概念对比:
MySQL | Elasticsearch | 说明 |
---|---|---|
Table(表) | Index | 索引(index)就是相同类型文档的集合,类似于数据库的表(table) |
Row | Document | 文档(document),就是一条条的数据,类似数据库中表的一行,文档都是JSON的格式 |
Colum | Field | 字段(Field),就是JSON 文档中的字段,类似数据库表中的列(colum) |
Schema | Mapping | Mapping(映射)是索引中文档的约束,例如 字段类型约束。数据库表结构的约束。 |
SQL | DSL | DSL是elasticsearch提供的JSON风格的请求语句,用来操作elasticsearch,实现CRUD |
MySQL:擅长事物类型操作,可以确保数据的安全和一致性
Elasticsearch:擅长海量数据的搜索、分析、计算。
docker pull elasticsearch:版本号
- 运行 创建容器
docker run -d
–name es
-e “ES_JAVA_OPTS=-Xms512m -Xmx512m”
-e “discovery.type=single-node”
-v es-data:/usr/share/elasticsearch/data
-v es-plugins:/usr/share/elasticsearch/plugins
–privileged
–network es-net
-p 9200:9200
-p 9300:9300
elasticsearch:8.3.3
docker run -d
–name kibana
-e ELASTICSEARCH_HOSTS=http://es:9200
–network=es-net
-p 5601:5601
kibana:8.3.3