全文检索-ElasticSearch 介绍与安装
为什么要使用ElasticSearch?
mysql虽然可以进行检索,但是其主要目的是为了对数据进行持久化与管理。当数据的量级很高,如果使用mysql进行检索,会导致数据库的压力相当大。因此需要专注于检索的ElasticSearch。
官方英文:https://www.elastic.co/guide/en/elasticsearch/reference/current/index.html
官方中文(基于2.x):https://www.elastic.co/guide/cn/elasticsearch/guide/current/foreword_id.html
社区中文:
https://es.xiaoleilu.com/index.html
http://doc.codingdict.com/elasticsearch/0/
基本概念
1.1 Index(索引)
在mysql中保存一条数据我们称为insert,在ElasticSearch中保存我们称为index。
同样在mysql中存储数据之前需要创建一个database,那么在ElasticSearch中需要创建一个index。
动词:相当于MySQL中的insert;
名词:相当于MySQL中的database;
1.2 Type(类型)
在 Index(索引)中,可以定义一个或多个类型。
类似类似于mysql中需要在数据库中创建一张或多张Table,而在ElasticSearch中对应的为Type。
把一条数据存在某个index的某个type下,就相当于把数据存在某个database的某个table下。
在ElasticSearch6.0之后,Type类型被移除。
1.3 Document(文档)

1.4 倒排索引
ElasticSearch在保存记录的时候会先进行整句拆分,然后根据单词维护一张索引表,记录了每个单词对应的记录。在进行检索的时候,会通过单词进行检索,然后计算相关性得分,从高到低排列。
dock安装
1.下载镜像文件
docker pull elasticseach:7.4.2 //存储和检索工具
docker pull kibana:7.4.2 //可视化检索工具
2.创建实例
创建挂载文件
# -p表示创建多层目录 这里是为了将docker容器与宿主机挂载
mkdir -p /mydata/elasticsearch/config # 创建配置文件目录
mkdir -p /mydata/elasticsearch/data # 创建数据持久化目录
# 配置任意机器可以访问 elasticsearch
echo "http.host: 0.0.0.0" >> /mydata/elasticsearch/config/elasticsearch.yml
# 注意这里的权限设置 保证文件夹中文件可读可写
chmod -R 777 /mydata/elasticsearch/
启动实例
docker run --name elasticsearch -p 9200:9200 -p 9300:9300 \
-e "discovery.type=single-node" \
-e ES_JAVA_OPTS="-Xms64m -Xmx128m" \
-v /mydata/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \
-v /mydata/elasticsearch/data:/usr/share/elasticsearch/data \
-v /mydata/elasticsearch/plugins:/usr/share/elasticsearch/plugins \
-d elasticsearch:7.4.2
-p 9200:9200 -p 9300:9300
:向外暴露两个端口,9200用于HTTP REST API请求,9300用于ES在分布式集群状态下 ES 之间的通信端口;-e "disco1very.type=single-node"
:设置es以单节点运行-e ES_JAVA_OPTS="-Xms64m -Xmx512m"
:设置启动初始内存和最大内存,不设置可能会占用过大无法启动(虚拟机卡死)。-v
:挂载容器中的配置文件、数据文件、插件数据到本机的文件夹;-d elasticsearch:7.6.2
:指定要启动的镜像
kibana
docker run --name kibana \
-e ELASTICSEARCH_HOSTS=http://192.168.56.10:9200 \ #换成自己的
-p 5601:5601 \
-d kibana:7.4.2
访问:http://192.168.56.10:5601/ 进入Kibana