Elasticsearch
一、ES概述
Elasticsearch,简称ES。
功能:实时的存储、检索数据、日志统计、分析、系统监控
官网:https://www.elastic.co/cn
没有ES之前,使用Mysql实现模糊查询 LIKE CONCAT('%', "搜索词", '%')
问题:
1. 搜索词是一个整体,不能拆分
2. 效率低,不会用到索引
学ES之后:
在ES中存储一些数据(id,商品名字,图片,价格,浏览量)
二、ES环境搭建
- 下载
ES下载地址:https://www.elastic.co/cn/downloads/elasticsearch
7.6.1版本:https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.6.1-windows-x86_64.zip - 解压
在bin目录中 双击启动 elasticsearch.bat - 访问
http://127.0.0.1:9200/
a.数据可视化界面(elasticsearch head)
- 下载
提前安装 node.js
github 下载: https://github.com/mobz/elasticsearch-head/
github 加速器: https://github.ur1.fun/ - 解压
从界面访问 9200 服务会出现跨域问题
在 config 目录中的 elasticsearch.yml 文件中配置
在目录地址输入cmd进入命令行# 开启跨域 http.cors.enabled: true # 所有人访问 http.cors.allow-origin: "*"
npm install npm run start
- 访问
http://127.0.0.1:9100/
b.安装可视化kibana组件
- 下载
下载版本要与ES版本一致
下载地址:https://www.elastic.co/cn/downloads/kibana
7.6.1版本
https://artifacts.elastic.co/downloads/kibana/kibana-7.6.1-windows-x86_64.zip - 解压,汉化kibana
修改config目录下的kibana.yml文件,加一句i18n.locale: "zh-CN"
- 启动
双击bin目录下的kibana启动 - 访问
http://127.0.0.1:5601/
c.安装ik分词器插件
- 下载
7.6.1版本:https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.6.1/elasticsearch- analysis-ik-7.6.1.zip - 解压
在elasticsearch-7.6.1\plugins目录下创建名称为ik的文件夹,将解压后的文件复制到 ik 目录 - 测试
在 kibana 的 DevTools 中测试GET _analyze { "analyzer": "ik_max_word",//分词器类型 "text": "社会新闻"//分词内容 }
三、ES基本概念
回顾Mysql:
数据库–>表(表名,字段)–>记录(一行数据)
ES:
索引:同类型文档的集合(表)
文档:一行数据就是一个文档Json格式(Mysql中的一行记录)
字段:Json中的字段(属性)
映射:索引中文档的约束,字段名称,类型
正向索引和倒向索引
正向索引:
正向索引以文档编号为视角看待索引词,即通过文档编号去找索引词。具体来说,正向索引表以文档的ID为关键字,表中记录文档中每个字的位置信息。在查找时,扫描表中每个文档中字的信息,直到找出所有包含查询关键字的文档。正向索引的优点是结构简单,建立和维护都比较方便。但如果需要查询某个关键词,需要扫描所有文档,效率较低。
倒排索引:
倒排索引以字或词为关键字进行索引,即从关键词到文档的映射关系。表中关键字所对应的记录表项记录了出现这个字或词的所有文档,一个表项就是一个字表段,记录该文档的ID和字符在该文档中出现的位置情况。倒排索引的优点是查询效率高,因为可以一次性获取所有包含关键词的文档。但它的建立和维护相对复杂。
a.ES索引库操作
创建索引库
PUT /news
{
"mappings": {
"properties": {
"id":{
"type": "integer",
"index": false
},
"title":{
"type": "text",
"analyzer": "ik_smart"
},
"img":{
"type": "keyword",
"index": false
},
"pageview":{
"type": "integer",
"index": false
}
}
}
}
查询索引库
GET /news
修改索引库
PUT /news/_mapping
{
"properties":{
"title":{
"type":"text",
"analyzer":"ik_smart"
}
}
}
删除索引库
DELETE /news
b.ES文档操作
新增文档
POST /news/_doc/10
{
"id":10,
"title":"标题",
"img":"eee.jpg",
"count":205
}
查询文档
GET /news/_doc/5
删除文档
DELETE /news/_doc/9
修改文档文章来源:https://www.toymoban.com/news/detail-808335.html
POST /news/_update/10
{
"doc": {
"count":500,
"img":"b.png",
"title":"标题"
}
}
搜索文档文章来源地址https://www.toymoban.com/news/detail-808335.html
GET /news/_search
{
"query": {
"match": {
"title": "反向消费"
}
}
}
四、SpringBoot集成ES
- 搭建
官网:https://www.elastic.co/guide/en/elasticsearch/client/index.html
指定版本,版本必须与安装的 ES 版本一致,在pom.xml中添加<properties> <java.version>1.8</java.version> <elasticsearch.version
到了这里,关于ES(检索数据)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!