第三章 ElasticSearch安装与概述 v1.0
一、概述
1.简介
ElasticSearch是一款非常强大的开源搜索引擎,可以帮助我们从海量数据中快速找到需要的内容。
Elastic Stack(ELK) ,被广泛应用在日志数据分析、实时监控等领域:
- Kibana:管理Logstash和ElasticSearch等的Web 界面,可以帮助汇总、分析和搜索重要数据日志
- ElasticSearch:分布式搜索引擎,提供搜集、分析、存储数据三大功能
- Logstash:日志的搜集、分析、过滤日志的工具,支持大量的数据获取方式
- (新增)Beats:搜集网络流量数据、搜集系统、进程和文件系统级别的 CPU 和内存使用情况等
优势:高性能,原生支持分布式,可水平扩展;提供Restful接口,可被任何语言调用
2.特性:倒排索引
a.正向索引与倒排索引
正向索引:基于文档id创造索引,查询时先找到文档再确定是否包含词条
倒排索引:基于内容分词,对词条创建索引,记录词条所在文档信息,查询先根据词条获取文档id,再获取文档
b.倒排索引工作流程
存储流程:按语义分词->以词条为索引存储文档id->存入数据库
搜索流程:按语义分词->以词条搜索得到词条所在文档id->存入结果集


3.相关概念
a.索引(index)
相同类型文档的集合,类似数据库中的表(table)
b.文档(document)
即数据,类似数据库中的行(row),文档都是json格式的数据
c.字段(field)
json文档中的字段,类似数据库中的列(column)
d.映射(mapping)
索引中文档中的字段约束信息,类似表的结构约束(schema)
e.操作语言(DSL)
ElasticSearch提供的JSON风格的请求语句,用来操作ElasticSearch,实现CRUD
4.MySQL与ElasticSearch对比
MySQL:擅长事务类型操作,可以确保数据的安全和一致性
ElasticSearch:擅长海量数据的搜索、分析、计算
一、docker安装ElasticSearch
1.创建网络
bash
docker network create es-net2.加载镜像或拉取镜像
bash
docker load -i es.tar3.运行
bash
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二、docker安装Kibana
bash
docker run -d \
--name kibana \
-e ELASTICSEARCH_HOSTS=http://es:9200 \
--network=es-net \
-p 5601:5601 \
kibana:7.12.1三、分词器ik
下载:analysis-ik 发布目录,请选择与 Elasticsearch 版本匹配的插件包。
bash
docker volume inspect es-plugins #查看数据卷目录
#将下载文件拷贝:/var/lib/docker/volumes/es-plugins/_data
docker restart es #重启容器四、密码配置
1.修改配置文件
- 进入容器:
docker exec -it es bash - 启用认证:
vi config/elasticsearch.yml
bash
http.cors.enabled: true
http.cors.allow-origin: "*"
http.cors.allow-headers: Authorization
xpack.security.enabled: true
xpack.security.transport.ssl.enabled: true- 保存后,退出容器,重启ES:
docker restart es
2.设置用户密码
- 上一步重启ES容器后,再次进入容器:
docker exec -it es /bin/bash - 再次进入容器后,执行以下命令:
./bin/elasticsearch-setup-passwords interactive - 完成以上的设置后,需要再次重启ES容器:
docker restart es