ElasticSearch入门——来自~狂神说~总结(二)

狂神说视频地址:https://www.bilibili.com/video/BV17a4y1x7zq?p=8

1.ES核心概念

(1)概述
集群、节点、索引、类型、文档、分片、映射是什么?

1.索引

2.字段类型(mapping)

3.文档(documents)

4.分片(倒排索引)

elasticsearch是面向文档,关系型数据库和elasticsearch客观对比!,es一切都是JSON

在这里插入图片描述

elasticsearch(集群)中可以包含多个索引(数据库),每个索引中可以包含多个类型(表),每个类型下又包含多个文档(行),每个文档中又包含多个字段(列)。

物理设计:

elasticsearch在后台把每个索引划分成多个分片,每个分片可以在集群中的不同服务器间迁移。

一个es就是一个集群,默认的集群名称就是elasticsearch。

在这里插入图片描述
逻辑设计:

一个索引类型中,包含多个文档,比如说文档1,文档2.当我们索引一篇文档时,可以通过这样的一个顺序找到它:索引->类型->文档ID,通过这个组合我们就能索引到某个具体的文档,注意:ID不必是整数,实际上它是个字符串。

  • 文档
    就是数据库中的一条条数据
    在这里插入图片描述

之前说elasticsearch是面向文档的,那么就意味着索引和搜索数据的最小单位是文档,elasticsearch中,文档有几个重要属性:

  • 自我包含,一篇文档同时包含字段和对应的值,也就是同时包含Key:value
  • 可以是层次型的,一个文档中包含自文档,复杂的逻辑实体就是这么来的!(就是一个JSON对象,fastjson自动转换。)
  • 灵活的结构,文档不依赖预先定义的模式,我们知道关系型数据库中,要提前定义字段才能使用,在elasticsearch中,对于字段是非常灵活的,有时候,我们可以忽略该字段,或者动态的添加一个新的字段。

尽管我们可以随意的新增或者忽略某个字段,但是,每个字段的类型非常重要,比如一个年龄字段类型,可以是字符串也可以是整型。因为elasticsearch会保存字段和类型之间的映射以及其他的设置。这种映射具体到每个映射的每种类型,这也是什么在elasticsearch中,类型有时候也称之为映射类型。

  • 类型

类型是文档逻辑容器,就像关系型数据库一样,表格是行的容器。类型中对于字段的定义称为映射,比如name映射为字符串类型。我们说文档是无模式的,他们不需要拥有映射中所定义的所有字段,比如新增一个字段,那么elasticsearch是怎么做到的呢?

elasticsearch会自动的将新字段加入映射,但是这个es不确定这个字段是什么类型,elasticsearch就开始猜,如果这个值是18,那么elasticsearch会认为是整型,但是也不应定正确,所以最好先定义好字段。在这里插入图片描述

  • 索引

就是数据库!

索引是映射类型的容器,elasticsearch中的索引是一个非常大的文档集合,索引存储了映射类型的字段和其他设置,然后他们被存储到了各个分片上。

物理设置:节点和分片 如何工作

在这里插入图片描述
一个集群至少有一个节点,而一个节点就是一个elasticsearch进程,节点可以有多个索引默认的,如果你创建索引,那么索引将会有5个分片构成,每一个主分片会有一个副本(复制分片)
在这里插入图片描述
上图是一个有3个节点的集群,可以看到主分片和对应的复制分片都不会在同一个节点内,这样有利于某个节点挂掉了,数据也不至于丢失。实际上,一个分片是一个Lucene索引,一个包含倒排索引的文件目录,倒排索引的结构使得elasticsearch在不扫描全部文档的情况下,就能告诉你哪些文档包含特定的关键字。

  • 倒排索引

elasticsearch使用的是一种称为倒排索引的结构,采用lucene倒排索引作为底层。这种结构适用于快速的全文搜素,一个索引由文档中所有不重复的列表构成,对于每一个词,都有一个包含它的文档列表。列如,现在有两个文档,每个文档包含如下内容:
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
elasticsearch的索引和Lucene的索引对比

在elasticsearch中,索引(库)这个词被频繁使用,这就是术语的使用。在elasticsearch中,索引被分为多个分片,每份分片是一个Lucene的索引。所以一个elasticsearch索引是由多个Lucene所用组成。

2.Rest风格说明

一种软件架构风格,而不是标准,只是提供了一组设计原则和约束条件。它主要用于客户端和服务器交互类的软件。基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存等机制。

  • 基本Rest命令说明;

在这里插入图片描述
(1)关于索引的基本操作

  • 创建一个索引
PUT /索引名/~类型名~/文档id
{请求体}

在这里插入图片描述

  • 完成了自动增加了索引,数据也成功的添加了,这就是初期可以把它当做数据库学习的原因

在这里插入图片描述

  • 那么name这个字段用不用指定类型呢,毕竟我们关系型数据库是需要指定类型得。

在这里插入图片描述

  • 指定字段的类型(创建规则)

在这里插入图片描述

  • 通过GET请求,获得这个规则(库的信息)!

在这里插入图片描述

  • 查看默认的信息

在这里插入图片描述
在这里插入图片描述
如果自己的文档字段没有指定,那么es就会默认配置字段类型!

扩展:通过命令elasticSearch索引情况!

  • 通过get _cat/ 可以获得es的当前很多信息

在这里插入图片描述

  • 修改 提交还是使用PUT即可!然后覆盖,最新办法!

曾经的办法
在这里插入图片描述
现在的方法

在这里插入图片描述

  • 删除索引

在这里插入图片描述
通过DELETE 命令实现删除、根据你的请求来判断是删除索引还是删除文档记录。

使用RESTFUL风格是我们ES推荐大家使用的!

(2)关于文档的基本操作 (重点!)

  • 基本操作

1.添加数据

PUT /kuangshen/user/1
{
	"name": "狂神说",
	"age": 23,
	"desc": "一顿操作.......",
	"tags": ["技术宅","温暖"]
}

在这里插入图片描述
2.获取数据 GET

在这里插入图片描述
3.更新数据 PUT ,不太推荐(每次修改必须修改所有数据)

在这里插入图片描述
4.Post _update,推荐使用这种更新方式

在这里插入图片描述
5.简单的搜索

GET kuangshen/user/1

简单的条件查询,可以根据默认的映射规则,产生基本的查询。

在这里插入图片描述
在这里插入图片描述

  • 复杂操作

select(排序,分页,高亮,模糊查询,精准查询!)

在这里插入图片描述
在这里插入图片描述
输出结果不想要那么多!

在这里插入图片描述
我们拿之后使用JAVA操作es,所有的方法和对象就是这里面的key!

  • 排序

在这里插入图片描述

  • 分页查询

在这里插入图片描述
数据下标还是从0开始的,和学的所有数据结构都是一样的!

前端接收参数: /search/{current}/{pagesize}

  • boolean查询

must(and),所有条件都要符合 !

在这里插入图片描述
should(or),满足最少一个条件 !在这里插入图片描述
must_not(not)

在这里插入图片描述

过滤器filter

在这里插入图片描述

注:

  • gt 大于
  • gte 大于等于
  • lt 小于
  • lte 小于等于

在这里插入图片描述

  • 匹配多个条件

在这里插入图片描述

  • 精确查询

term查询是直接通过倒排索引指定的词条进程精确查询的。

关于分词:

term,直接查询精确的

match,会使用分词器解析!(先分析文档,然后再通过分析的文档进行查询!)

两个类型 text keywor

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

  • 多个值匹配的精确查询

在这里插入图片描述

  • 高亮查询

在这里插入图片描述
在这里插入图片描述

3.集成SpringBoot

  • 找文档
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    1.找到原生的依赖在这里插入图片描述
    2.找对象

在这里插入图片描述
3.分析这个类中的方法即可

  • 配合基本的项目

问题:一定要保证我们导入的依赖和我们es版本一致
在这里插入图片描述
自定义版本

在这里插入图片描述
源码中提供的对象!在这里插入图片描述
虽然这里导入了3个类,静态内部类,核心类就一个。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
(1)具体的API测试

1.创建索引
在这里插入图片描述
2.测试获取索引

在这里插入图片描述
3.测试删除索引在这里插入图片描述
4.添加文档测试
在这里插入图片描述
5.判断文档是否存在在这里插入图片描述
6.获得文档的信息
在这里插入图片描述
7.更新文档信息
在这里插入图片描述
8.删除文档记录
在这里插入图片描述
9.特殊的,真实的项目一般都会批量插入数据。在这里插入图片描述
在这里插入图片描述
10.查询
在这里插入图片描述
在这里插入图片描述

3.实战

在这里插入图片描述

4.爬虫

数据问题?数据库获取,小消息队列中获取,都可以成为数据源,爬虫!

  • 爬取数据

获取请求返回的页面信息,筛选出我们想要的数据就可以了!使用jSoup包。
在这里插入图片描述
1.爬取京东数据放到ES中

在这里插入图片描述
2.获取这些数据实现搜索功能在这里插入图片描述
在这里插入图片描述
Controller层

在这里插入图片描述

5.搜索高亮

实现高亮

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
controller
在这里插入图片描述

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值