是什么
elasticsearch是一款非常强大的开源搜索引擎,具备非常多强大功能,可以帮助我们从海量数据中快速找到需要的内容。
elasticsearch结合kibana、Logstash、Beats,也就是elastic stack(ELK)。被广泛应用在日志数据分析、实时监控等领域。而elasticsearch是elastic stack的核心,负责存储、搜索、分析数据。
倒排索引
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:擅长事务类型操作,可以确保数据的安全和一致性
ES:擅长海量数据的搜索、分析、计算
安装
//需要让es和kibana容器互联。这里先创建一个网络docker network create es-net//部署单点es:docker run -d \--name es \-e "ES_JAVA_OPTS=-Xms512m -Xmx512m" \-e "discovery.type=single-node" \-v /home/yu/Desktop/es/es-data:/usr/share/elasticsearch/data \-v /home/yu/Desktop/es/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`:端口映射配置
在浏览器中输入:http://XXXX:9200 即可看到elasticsearch的响应结果:
kibana可以给我们提供一个elasticsearch的可视化界面,便于我们学习。
docker run -d \--name kibana \-e ELASTICSEARCH_HOSTS=http://es:9200 \--network=es-net \-p 5601:5601 \kibana:7.12.1● --network es-net :加入一个名为es-net的网络中,与elasticsearch在同一个网络中● -e ELASTICSEARCH_HOSTS=http://es:9200":设置elasticsearch的地址,因为kibana已经与elasticsearch在一个网络,因此可以用容器名直接访问elasticsearch● -p 5601:5601:端口映射配置
安装成功后,访问5601端口,界面如下:
配置IK分词器,进行智能分词(ik_smart和ik_max_word两种模式),并且ik分词器可以设置扩展词(卷王、萌萌哒。。。)和停用词(一些敏感词汇)。
地址https://github.com/medcl/elasticsearch-analysis-ik
将安装包重命名为ik,放入挂载的es-plugin目录中,重启应用
测试(dev_tool)
结果
常用REST API https://www.elastic.co/guide/en/elasticsearch/reference/7.12/indices-analyze.html
