ElasticSearch笔记
Posted XLrong2000
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ElasticSearch笔记相关的知识,希望对你有一定的参考价值。
ES
ES是一个开源搜索引擎,具备非常多强大功能,可以帮助我们从海量数据中快速找到需要的内容
ES结合kibana、Logstash、Beats,也就是Elastic技术栈,被广泛应用在日志数据分析、实时监控等领域
ES是Elastic技术栈的核心,负责存储、搜索、处理数据
Lucene
一个Java语言的搜索引擎类库,是Apache公司的顶级项目,由DougCutting于1999年研发
Lucene优缺点
- 优势
- 易扩展
- 高性能(基于倒排索引)
- 缺点
- 只限于Java语言开发
- 学习曲线陡峭
- 不支持水平扩展
ES相对于Lucene的优点
- 支持分布式,可水平扩展
- 提供Restful接口,可被任何语言调用
ES结构以及和mysql各部分区别
MySQL | Elasticsearch | 说明 |
---|---|---|
Table | Index | 索引(index),就是文档的集合,类似数据库的表(table) |
Row | Document | 文档(Document),就是一条条的数据,类似数据库中的行(Row),文档都是JSON格式 |
Column | Field | 字段(Field),就是JSON文档中的字段,类似数据库中的列(Column) |
Schema | Mapping | Mapping(映射)是索引中文档的约束,例如字段类型约束。类似数据库的表结构(Schema) |
SQL | DSL | DSL是elasticsearch提供的JSON风格的请求语句,用来操作elasticsearch,实现CRUD |
- MySQL擅长事务类型操作,可以确保数据的安全和一致性
- Elasticsearch擅长海量数据的搜索、分析、计算
- MySQL和Elasticsearch不是相互替代的关系、是互补的关系
倒排索引
倒排索引是基于MySQL这样的正向索引而言的
- 文档: 每条数据就是一个文档
- 词条: 文档按照语义分成的词语
倒排索引流程
- 将每一个文档的数据利用算法分词,得到一个个词条
- 创建表,每行数据包括词条、词条所在文档id、位置等信息
- 因为词条唯一性,可以给词条创建索引,例如hash表结构索引
部署单点ES
- 创建网络
docker network create es-net
- 下载镜像/加载镜像
# 因为镜像比较大,可以选择从本地上传
# 下载elasticsearch
docker pull elasticsearch:所需tag
# 下载kibana
docker pull kibana:所需tag
- 运行镜像
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:7.12.1
命令解释:
-e "cluster.name=es-docker-cluster"
:设置集群名称-e "http.host=0.0.0.0"
:监听的地址,可以外网访问-e "ES_JAVA_OPTS=-Xms512m -Xmx512m"
:内存大小,可以改小-e "discovery.type=single-node"
:非集群模式-v es-data:/usr/share/elasticsearch/data
:挂载逻辑卷,绑定es的数据目录-v es-logs:/usr/share/elasticsearch/logs
:挂载逻辑卷,绑定es的日志目录-v es-plugins:/usr/share/elasticsearch/plugins
:挂载逻辑卷,绑定es的插件目录--privileged
:授予逻辑卷访问权--network es-net
:加入一个名为es-net的网络中-p 9200:9200
:端口映射配置
- 浏览器查看是否启动(记得开放9200端口)
- 启动Kibana(ES可视化)
docker run -d \\
--name kibana \\
-e ELASTICSEARCH_HOSTS=http://es:9200 \\
--network=es-net \\
-p 5601:5601 \\
kibana:7.12.1
- 注: 内存不足时ES容器会自动停止
安装IK分词器
- 在线安装IK插件
# 进入容器内部
docker exec -it es /bin/bash
# 在线下载并安装
./bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.12.1/elasticsearch-analysis-ik-7.12.1.zip
- 推出容器
exit
- 重启容器
docker restart es
- 测试
GET /_analyze
"analyzer": "ik_max_word",
"text": "ES真是太好了,太好用了了"
以上是关于ElasticSearch笔记的主要内容,如果未能解决你的问题,请参考以下文章