Elasticsearch part4—ES的文档基础操作和_search查询
文档基本操作
Elasticsearch(ES)中的 “文档(Document)”
是存储数据的基本单元(类似数据库中的
“行”),所有业务数据最终都以文档形式存储在索引中。
文档结构:JSON
格式,包含多个字段(如id、name),字段值需符合索引映射(Mapping)定义的类型。
文档 ID:唯一标识文档,可手动指定或由 ES
自动生成。
元数据:文档自带的系统字段,如_index(所属索引)、_id(文档
ID)、_version(版本号,每次修改递增)。
文档创建
新增文档有两种方式:指定
ID(PUT)或自动生成
ID(POST)
指定 ID 新增(PUT)
适用于已知唯一 ID 的场景(如用业务 ID 作为文档 ID)。
123456PUT /索引名/_doc/文档ID{ "字段1": "值1", "字段2": "值2", ...}
示例(向users_test索引新增...
Elasticsearch part5—在Spring框架中操作ES文档
RestAPI
在前面我们讲解了手动发送的对 ES 索引库和文档的操作
本质上这些都是组装请求,携带JSON,进行我们想要的操作,通过http请求发送给ES。
REST(Representational State
Transfer,表述性状态转移)是一种软件架构风格,用于构建网络应用程序。而基于
REST 风格设计的 API 就称为 RestAPI。
RestAPI 具备以下特点:
资源抽象:将网络中的一切都视为资源,比如一篇文章、一个用户、一条订单记录等,每个资源都有对应的唯一
URI(Uniform Resource
Identifier,统一资源标识符)来标识,像https://example.com/api/users/1
就可以表示 ID 为 1 的用户资源。
无状态通信:客户端和服务器之间的通信是无状态的,即每次请求都包含了处理该请求所需的全部信息,服务器不会依赖之前请求的状态来处理当前请求。这使得请求可以被独立处理,提高了系统的可扩展性和可靠性。
统一接口:使用标准的 HTTP
方法(GET、POST、PUT、DELETE...
Elasticsearch_part3—ES分词器和索引基础操作
分词器
什么是分词器
分词器是 Elasticsearch
中用于处理文本数据的核心组件。它的任务是将一串原始的、连续的文本(比如一个句子或一段话),切分成一个个独立的、有意义的词条,并可能对这些词条进行规范化处理。
分词器是将用户输入的一段文本,按照一定逻辑,分析成多个词语的一种工具。
想象一下你在处理英文句子
"I'm loving the beautiful scenery!"。
未经处理:对计算机来说,这只是一长串字符。
经过分词器处理后:它会被切分成
["i'm", "loving", "the", "beautiful", "scenery"],并且可能进一步规范化为
["i", "love", "beautiful", "scenery"](去停用词、词干提取等)。
这样,计算机才能基于这些独立的词条来构建倒排索引,并进行高效的搜索。
其中,ES 内置了许多分词器:
Standard Analyzer -
默认分词器,按词切分,小写处理
Simple Analyzer...
Elasticsearch part2—深入讲解ES倒排索引及其优化机制
Elasticsearch的索引
深入理解 ES 的索引
Elasticsearch是一个基于Lucene库的开源搜索引擎,它提供分布式的实时文件存储和搜索,可扩展性好,并且支持通过HTTP网络接口交互,数据以JSON格式展示。
之前中我们介绍过,Elasticsearch
索引是一个逻辑命名空间,其中包含一系列的文档。每个文档由一系列字段组成,字段则是包含数据的键值对。可以将
Elasticsearch
集群视为一个数据库,索引就相当于数据库中的表,而文档类似于表中的行。
而关系数据库中的索引是与表相关联的一种数据结构,用于加速数据检索。
Elasticsearch
索引是一个包含文档的逻辑单元,且无需预先定义模式便可导入数据,具有更高的灵活性。
而 Elasticsearch 的索引机制是完全不同于MySQL的 B+Tree
结构。索引会被压缩放入内存用于加速搜索过程,这一点在效率上是完爆 MySQL
的。但是 Elasticsearch 会对全部...
Elasticsearch part1—ES相关内容的安装和初步配置
Elasticsearch介绍
前言
想象一下:
你拥有一个超大型的galgame数据库(你的数据),里面有数百个galgame游戏(你的文档)。Elasticsearch
就是这个数据库里一位强大的“老资历”。
传统查找(如数据库):
如果你想找一本名叫《XXX》的galgame,你得知道它在哪个区、哪个文件夹、哪一层(这相当于数据库的索引和主键)。如果你记不清全名,只记得游戏里提到了“人工智能”和“未来”,传统方式就几乎无能为力了。
Elasticsearch 的方式:
这位老资历不同,他不仅记得每个galgame的游戏名、出场角色、cv,他甚至记得每个场景里每一句对话的每一个词。你只需要走过去对他说:“老资历,帮我找所有谈到‘人工智能’和‘未来’的galgame”,他几乎能瞬间给你一个精确的、按相关性排序的游戏——未来广播与人工鸽。
这个“超级老资历”就是
Elasticsearch。它是一个开源的、分布式的、RESTful
的搜索和分析引擎。
本质上,ES...
Windows下minio的配置和在Spring框架的使用
MinIO的配置
前言
MinIO
是一款高性能、分布式的对象存储系统,常用于存储非结构化数据(如图片、视频、文档等)。它可以100%的运行在标准硬件。即X86等低成本机器也能够很好的运行MinIO。
MinIO是一个非常轻量的服务,可以很简单的和其他应用的结合,类似 NodeJS,
Redis 或者 MySQL。
对象存储服务(Object...
Trinoline_Genesis安装教程
本体解压完之后需要继续解压,解压完后会出现这些内容
image-20251016172455279
挂载镜像,GENESIS.iso
是光盘映像文件,需要先 “挂载”
到系统,模拟成真实光盘才能安装。
系统会自动把 GENESIS.iso
挂载为一个虚拟光驱(比如新增一个 “DVD
驱动器”,盘符可能是 D:、E: 等,我是Y:)。
挂载完之后是这样的
image-20251016172905535
注意先挂载,然后以管理员权限运行 anzhuang.bat,序列号全用大写
A,用来破序列
请注意全部输入 A,20个,多了就报错
这个安装目录是默认安装到 c:,打开 anzhuang.bat
也可以修改,但是貌似修改到非 C 盘会报错,因为权限不够
右键点击 anzhuang.bat → 选择
“编辑”(用记事本打开)。
在打开的批处理文件中,找到设置安装路径的代码行(
set...
不同的开源协议之间都有什么区别
什么是开源协议
开源协议是一种法律文件,它规定了开源软件的使用者、修改者和分发者在使用、修改和分发该软件时的权利和义务。其核心目的是在保护版权的同时,推动软件的共享和创新。
开源协议本质上是版权所有者对软件使用、修改、分发的规则定义,以下是
GitHub 上最常用的协议类型:
image-20250614185512976
image-20250614185526130
开源协议有 LGPL,Mozilla,GPL,BSD,MIT 和 Apache。
核心条款包括
条款类型
具体内容
商业使用
是否允许将开源软件用于商业产品或服务(如 MIT、Apache 允许,CC-BY-NC
禁止)。
衍生作品开源
是否要求修改后的代码或衍生作品必须开源(如 GPL 强制开源,MIT
无此限制)。
版权声明
是否必须保留原作者的版权和许可声明(几乎所有协议均要求)。
专利授权
是否包含专利授权条款,避免用户因使用代码而被起诉(如 Apache...
如何搭建微服务项目并且进行模块设计
如何在IDEA搭建一个微服务项目
最近在写微服务,在搭建微服务的时候,还是碰壁了许多,所以专门写一篇文章来总结一下相关内容
微服务就是将单个应用程序开发为一组小服务的方法,每个小服务都在自己的进程中运行并与轻量级机制(通常是HTTP资源API)进行通信。
搭建根目录
所以我们还是要建立 Spring Boot 的项目,根项目拿 Maven 搭建也可以
image-20250930105847970
下一步什么依赖也不选择,因为本质上,我们需要的根项目其实是空的
image-20250930105855904
新建的根项目中会有许多的内容,我们要删除一些保持项目目录整洁
image-20250930110021596
这里拿我之前的来演示了
我们把除了 .idea目录,pom.xml 和 .gitignore
留着外,剩下的都删了,包括 src,删了后就是这样
这些文件和目录都是什么作用呢?在这里简单说一下作用以及为什么能删,为什么不能删
.idea 目录
作用:这是 IntelliJ...
Spring Security part8—基于request的授权(上)
授权管理讲解
授权管理是什么
一般我们来说,权限认证就是解决你是谁的问题,也就是验证用户身份,在这个过程中,我们通常使用登录来实现,它的核心目标是,核实用户的身份合法性。
授权是在身份认证通过后,判断该用户是否有权限执行某个操作的过程。它的核心目标是,控制不同级别的用户对资源的访问权限。
授权的典型场景:
验证用户是否有权限访问某个 URL(如 /admin/*
仅管理员可访问)
验证用户是否有权限调用某个方法(如 deleteUser()
仅超级管理员可执行)
验证用户是否有权限操作某个数据(如只能修改自己创建的订单)
授权必须在认证之后进行(只有知道 “你是谁”,才能判断
“你能做什么”)。认证通过后,Spring Security 将用户的身份信息(含角色 /
权限)存入 SecurityContext,授权环节从
SecurityContext 中获取这些信息进行权限判断。
一般的授权需求有这样的两种:
用户-权限-资源
这是最基础的 “点对点”...












