elasticsearch是一种搜索引擎,淘宝、百度、pdd 都能有他的身影。
elasticsearch结合kibana、Logstash、Beats构成elastic stack(ELK)可进行日志数据分析、实时监控。
正向索引
MySQL数据采用正向索引 例如下表 student_table
select * from student_table where name like '%三%'
该搜索语句会进行 全表扫描,当数据量十分庞大时,性能较差。
| id | name | age |
|---|---|---|
| 0 | 张三 | 10 |
| 1 | 李四 | 15 |
| 2 | 张三三 | 25 |
倒排索引
elasticsearch采用倒排索引:
-
文档 document) : 每条数据就是一个文档
-
词条(term) : 文档按照语义分成的词语
| id | name | age |
|---|---|---|
| 0 | 张三 | 10 |
| 1 | 李四 | 15 |
| 2 | 王五 | 25 |
| 3 | 张三爸爸 | 50 |
| 4 | 李四爸爸 | 44 |
===》
| 词条(tern) | 文档(id) |
|---|---|
| 张三 | 0,3 |
| 李四 | 1,4 |
| 爸爸 | 3,4 |
语义分析(词条分类)这里我们不做考虑,有兴趣的同学自行研究一下叭~
那怎么查询呢?
例如 我们搜索 张三爸爸
-
分词得到 “张三” “爸爸”
-
得到词条所在文档id 张三: 0,3 爸爸:3,4
-
根据id查询文档 得到id为 0,3,4 的文档 最终取交集 将最终结果存入结果集
基础概念
文档
elasticsearch时面向文档存储的,文档数据会序列化为json格式后存储在elasticsearch中。
{
“id”:1,
"name": "大天才",
"age": 18
}
索引
-
索引:相同类型的文档集合
-
索引中文档的字段约束信息,类似于表结构约束。
职能
数据库(mysql):负责事务性操作
elasticsearch负责海量数据的搜索、分析和计算
安装elasticsearch
1.部署单点es
1.1创建网络
docker network create es-net
注:我这里用的是虚拟机替代的服务器
问题记录
大家注意下关闭防火墙和开启docker的顺序 ,我这里错误原因是先开启的docker 再 关闭防火墙 会报错
Error response from daemon: Failed to Setup IP tables: Unable to enable SKIP DNAT rule: (iptables failed: iptables --wait -t nat -I DOCKER -i br-a79b58c11c3f -j RETURN: iptables: No chain/target/match by that name. (exit status 1))
解决方案也很简单 再次启动docker
systemctl restart docker

1.2加载镜像
我喜欢去docker hub上直接pull新的

输入命令

1.3运行
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:latest
注:9200端口是外界访问的端口 9300是内部的
最后写tag的时候记得用 docker images 查询一下自己的镜像版本

然后我们去 Windows里面的浏览器浅看一下

安装好啦!
这里我们补充一下查询虚拟机ip的方法(我配置的动态ip,so他会变。大家如果也是动态的话就访问之前查询一下就行,记得进入管理员模式 su 输入密码即可)
ifconfig

本文介绍Elasticsearch这一搜索引擎的应用场景及工作原理,包括其在淘宝、百度等平台的应用,并通过对比MySQL的正向索引解释了Elasticsearch的倒排索引机制。此外,还提供了详细的Elasticsearch安装步骤。
1385

被折叠的 条评论
为什么被折叠?



