一、ElasticSearch简介

Elasticsearch 是一个分布式的免费开源搜索和分析引擎,适用于包括文本、数字、地理空间、结构化和非结构化数据等在内的所有类型的数据,底层基于Lucene实现。

  • 数据总体分为两类:结构化数据和非结构化数据。
    结构化数据:指具有固定格式或有限长度的数据,如数据库,元数据等。
    非结构化数据:指不定长或无固定格式的数据。非结构化数据又一种叫法叫全文数据。

  • 对比传统数据库
    在这里插入图片描述
    es没有事务的概念,不支持回滚,误删不能恢复。使用es在大量数据搜索和分析,或数据修改很少的场景。
    在这里插入图片描述
    es采用倒排索引,传统数据库采用B+树索引
    常规索引:
    文档——>关键词 但是这样检索关键词的时候很费力,要一个文档一个文档的遍历一遍。
    倒排索引:
    关键词——>文档 只要有关键词,立马就能找到她在那个文档里出现过,然后就可以查出整个文档。

二、ElasticSearch原理

Elasticsearch 的数据采集是指:在进行索引之前解析、标准化并充实这些原始数据的过程。这些数据在 Elasticsearch 索引完成之后,用户便可针对他们的数据运行复杂的查询,并使用聚合来检索自身数据的复杂汇总。
Elasticsearch 索引指相互关联的文档集合。Elasticsearch 会以 JSON 文档的形式存储数据。每个文档都会在一组键(字段或属性的名称)和它们对应的值(字符串、数字、布尔值、日期、数值组、地理位置或其他类型的数据)之间建立联系。

三、ElasticSearch简单使用

1. elasticsearch安装(Windows版)

官网下载地址
在这里插入图片描述
jdk与ElasticSearch版本兼容对照
在这里插入图片描述

将下载得到的zip文件解压,并打开bin目录下的elasticsearch.bat文件,等待启动完成
在这里插入图片描述
访问 http://localhost:9200,返回数据如下则启动成功
在这里插入图片描述
解决jdk版本支持问题
es提示更高版本的jdk支持,但自己的jdk环境是1.8。这里可以使用es自带的jdk,在系统环境变量中添加如下变量。
在这里插入图片描述
在这里插入图片描述
修改后即可正常启动es,警告消失
在这里插入图片描述

2. 安装es可视化工具ElasticHD

ElasticHD 是 github 上的一个开源的项目,没有官方网站。ElasticHD 支持 ES监控、实时搜索,Index template快捷替换修改,索引列表信息查看, SQL converts to DSL(T-SQL语法和DSL语法相互转换)工具等 。
es 6.3版本以后已经支持sql查询了。Elasticsearch SQL是一个X-Pack组件,它允许针对Elasticsearch实时执行类似SQL的查询。无论使用REST接口,命令行还是JDBC,任何客户端都可以使用SQL对Elasticsearch中的数据进行原生搜索和聚合数据。可以将Elasticsearch SQL看作是一种翻译器,它可以将SQL翻译成Query DSL。
在这里插入图片描述
在这里插入图片描述

ElasticHD下载地址
在这里插入图片描述
在这里插入图片描述
将下载的压缩包解压后得到一个exe文件,双击启动后,通过浏览器连接ElasticHD。连接地址为:http://localhost:9800
在这里插入图片描述
在这里插入图片描述

![在这里插入图片描述](https://img-blog.csdnimg.cn/215a9bd3fbb148428d23691bf3473876.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5pe25YWJ5py65bCP5a2p,size_20,color_FFFFFF,t_70,g_se,x_16

3. 安装kibana

Kibana版本必须与ElasticSearch版本保持一致。由于 Kibana 基于 Node.js 运行,我们在这些平台上包含了一些必要的 Node.js 二进制文件。Kibana 不支持在独立维护的 Node.js 版本上运行。
node下载地址
kibana下载地址

  • 下载得到的kibana文件解压后,设置连接elasticsearch实例,默认连接本地es服务
    kibana-7.13.4-windows-x86_64 -> config -> kibana.yml
    在这里插入图片描述
  • 启动kibana
    kibana-7.13.4-windows-x86_64 -> bin-> kibana.bat
    在这里插入图片描述
  • 访问kibana服务:http://localhost:5601/
    在这里插入图片描述
    启动Kibana后,Kibana会自动在配置的es中创建如下索引,用来存储数据,注意不要删除了。
    在这里插入图片描述
    如果把ElasticSearch理解成DB的话,这个仪表盘(Kibana)就是你使用的Navicat。

4. elasticsearch的简单使用

在kibana开发工具控制台管理elasticsearch的数据
在这里插入图片描述

  • 创建索引
## 创建索引school
## 名字不能包含特殊字符,只能小写,不能以-, _, +开头,不能超过255字节。
## PUT school本质是PUT http://ip:9200/school,也可以通过curl操作es
PUT school

在这里插入图片描述

  • 向指定索引添加文档
## 添加文档0
## type不需要创建,现在已经移除了type,因为在es的同一个index下不同type是存储在同一个索引中,即只能有一个type。如下_doc为type,0为文档id。
POST school/_doc/0
{
  "name":"zhangsan",
  "age":18
}
  • 查看索引信息
## 查看索引信息
GET school

或通过elasticHD查看
在这里插入图片描述
将以上对应的DSL语句复制,在Query中粘贴执行查询操作
在这里插入图片描述
查询结果如下
在这里插入图片描述

  • 删除索引
## 删除索引
DELETE hotel
  • 查看所有索引信息
GET _cat/indices
  • 向索引添加多条数据:_bulk
## 添加数据PUT和POST都可以
## 注意插入数据时如果指定的_id已经存在,那么新插入的数据会直接替换原ID的数据。
## 一行是要执行的动作(在本例中是“index”),另一行是实际文档。想重复多少次就重复多少次,不要忘记每行最后的换行符。
POST home/book/_bulk
{"index":{"_id":1}}
  {"name":"《围城》","price":101}
{"index":{"_id":2}}
  {"name":"《格林童话》","price":108}

## 如下格式是错误的
POST home/book/_bulk
{"index":{"_id":1}}
  {
    "name":"《围城》",
    "price":101
    
  }
{"index":{"_id":2}}
  {
    "name":"《格林童话》",
    "price":108
    
  }
  • 查看文档信息:_search
GET home/book/_search
{"query":{"match_all":{}}}
  • 修改文档信息:_update
## 修改文档信息:_update
#_update API,表示将id为0的document的price改为100
POST home/book/0/_update
{"script":
  {"source":"ctx._source.name=params.name",
   "lang":"painless",
   "params":{"name":"丞相"}
  }
}

5. Springboot整合es

查看博客

es分词器:
在这里插入图片描述


版权声明:本文为qq_50626505原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/qq_50626505/article/details/124157349