简介
Elasticsearch是分布式全文搜索引擎,拥有分片和倒排可以高效率查询数据,数据结构是面向文档的JSON格式数据库。
Elasticsearch与MySQL数据库数据结构对比:
1.索引(Index) 对应MySQL的数据库
2.类型(type) 对应MySQL的表
3.文档(Docments) 对应MySQL的行
4.字段(Fields) 对应MySQL的列
应用场景:全文搜索、日志采集收集。
Docker安装ES
创建ES挂载文件
mkdir -p /mnt/dockerdata/elk/es/{config,data,plugins}
编辑elasticsearch.yml
echo "http.host: 0.0.0.0" >> /mnt/dockerdata/elk/es/config/elasticsearch.yml
文件授权
chmod -R 777 /mnt/dockerdata/elk/es/
安装ES
docker run --name elasticsearch -p 9200:9200 -p 9300:9300 \
-e "discovery.type=single-node" \
-e ES_JAVA_OPTS="-Xms84m -Xmx512m" \
-v /mnt/dockerdata/elk/es/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \
-v /mnt/dockerdata/elk/es/data:/usr/share/elasticsearch/data \
-v /mnt/dockerdata/elk/es/plugins:/usr/share/elasticsearch/plugins \
-d elasticsearch:7.4.2
安装成功后,访问地址:
正向索引和倒排索引
传统数据库都是使用的正向索引,如MySQL:在数据检索时需要根据关键字从每一个字段中获取,最后查询到结构返回,
搜索引擎通常采用都是倒排索引,ElasticSearch底层也是倒排索引:根据关键字提前建立好索引,在查询的时候直接查索引,包含关键字的统统返回。
如下图:
数据内容如下:
序号 | 标题 | 文档内容 |
---|---|---|
1 | Spring | Spring Boot后端技术 |
2 | Java | Java后端技术 |
3 | JavaScript | 前端技术 |
搜索Java,根据关键字查询,最后返回结果如下(缺点,在查询的时候去匹配,如果内容多效率会比较慢)
序号 | 标题 | 文档内容 |
---|---|---|
1 | Spring | Spring Boot后端技术 |
2 | Java | Java后端技术 |
3 | JavaScript | 前端技术 |
使用倒排会提前建立好关键字索引(搜索查询会快,但是建立索引会比较麻烦)
单词ID | 单词 | 建立的文档id |
---|---|---|
1 | Spring | 1 |
2 | Java | 2、3 |
3 | JavaScript | 3 |
4 | 后端 | 1、2 |
5 | 技术 | 1、2、3 |
9200端口和9300端口
9200:提供Http,供restful访问、JS、Java集成调用。
9300:提供TCP,供内部协议之间通讯、Java集成调用。
使用restful来操作ES
直接通过ES 地址调用接口如下(下篇解释Kibana可视化工具来操作ES)
新建索引:
PUT http://192.168.126.156:9200/索引名(使用Http工具发送Put请求)
查询索引:
GET http://192.168.126.156:9200/索引名