【Elasticsearch】学习笔记-p2(索引库操作&文档操作)

RAG From Scratch 系列教程-1:RAG系统 想象一下你有一个非常博学的朋友,但他所有的知识都停留在2021年。现在你想问他"2023年世界杯冠军是谁?",他肯定答不上来。这就是当前大语言模型(LLM)面临的问题——它们的知识受限于训练时的数据。传统解决方法是对模型进行"微调"(fine-tuning),就像给朋友补课一样。但这相当于让他重新学习所有知识,既费时又昂贵。于是,聪明的AI工程师们发明了RAG(检索增强生成)技术,相当于给AI装了个"外挂U盘"!当用户提问时,系统会先从你的专属数据库/文档中搜索相关内容。 阅读详情

索引库就类似数据库表,mapping映射就类似表的结构。

我们要向es中存储数据,必须先创建“库”和“表”。

1.1 mapping映射属性


mapping是对索引库中文档的约束,常见的mapping属性包括:

  • type:字段数据类型,常见的简单类型有:

  • 字符串:text(可分词的文本)、keyword(精确值,例如:品牌、国家、ip地址)

  • 数值:long、integer、short、byte、double、float、

  • 布尔:boolean

  • 日期:date

  • 对象:object

  • index:是否创建索引,默认为true

  • analyzer:使用哪种分词器

  • properties:该字段的子字段

例如下面的json文档:

{

“age”: 21,

“weight”: 52.1,

“isMarried”: false,

“info”: “黑马程序员Java讲师”,

“email”: “zy@itcast.cn”,

“score”: [99.1, 99.5, 98.9],

“name”: {

“firstName”: “云”,

“lastName”: “赵”

}

}

对应的每个字段映射(mapping):

  • age:类型为 integer;参与搜索,因此需要index为true;无需分词器

  • weight:类型为float;参与搜索,因此需要index为true;无需分词器

  • isMarried:类型为boolean;参与搜索,因此需要index为true;无需分词器

  • info:类型为字符串,需要分词,因此是text;参与搜索,因此需要index为true;分词器可以用ik_smart

  • email:类型为字符串,但是不需要分词,因此是keyword;不参与搜索,因此需要index为false;无需分词器

  • score:虽然是数组,但是我们只看元素的类型,类型为float;参与搜索,因此需要index为true;无需分词器

  • name:类型为object,需要定义多个子属性

  • name.firstName;类型为字符串,但是不需要分词,因此是keyword;参与搜索,因此需要index为true;无需分词器

  • name.lastName;类型为字符串,但是不需要分词,因此是keyword;参与搜索,因此需要index为true;无需分词器

1.2 创建索引库和映射


基本语法:

  • 请求方式:PUT

  • 请求路径:/索引库名,可以自定义

  • 请求参数:mapping映射

格式:

PUT /索引库名称

{

“mappings”: {

“properties”: {

“字段名”:{

“type”: “text”,

“analyzer”: “ik_smart”

},

“字段名2”:{

“type”: “keyword”,

“index”: “false”

},

“字段名3”:{

“properties”: {

“子字段”: {

“type”: “keyword”

}

}

},

// …略

}

}

}

示例:

PUT /heima

{

“mappings”: {

“properties”: {

“info”:{

“type”: “text”,

“analyzer”: “ik_smart”

},

“email”:{

“type”: “keyword”,

“index”: “falsae”

},

“name”:{

“properties”: {

“firstName”: {

“type”: “keyword”

}

}

},

// … 略

}

}

}

1.3 查询索引库


基本语法:

  • 请求方式:GET

  • 请求路径:/索引库名

  • 请求参数:无

格式:

GET /索引库名

示例:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Cx2gcfUK-1637144046842)(C:\Users\30287\Desktop\Java学习视频\day05-Elasticsearch01\讲义\assets\image-20210720211019329.png)]

1.4 修改索引库


倒排索引结构虽然不复杂,但是一旦数据结构改变(比如改变了分词器),就需要重新创建倒排索引,这简直是灾难。因此索引库一旦创建,无法修改mapping。

虽然无法修改mapping中已有的字段,但是却允许添加新的字段到mapping中,因为不会对倒排索引产生影响。

语法说明:

PUT /索引库名/_mapping

{

“properties”: {

“新字段名”:{

“type”: “integer”

}

}

}

示例:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UY55fnQP-1637144046848)(C:\Users\30287\Desktop\Java学习视频\day05-Elasticsearch01\讲义\assets\image-20210720212357390.png)]

1.5 删除索引库


语法:

  • 请求方式:DELETE

  • 请求路径:/索引库名

  • 请求参数:无

格式:

DELETE /索引库名

在kibana中测试:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-azqaRwcd-1637144046851)(C:\Users\30287\Desktop\Java学习视频\day05-Elasticsearch01\讲义\assets\image-20210720212123420.png)]

1.6 总结


索引库操作有哪些?

  • 创建索引库:PUT /索引库名

  • 查询索引库:GET /索引库名

  • 删除索引库:DELETE /索引库名

  • 添加字段:PUT /索引库名/_mapping

2.文档操作

=====================================================================

2.1 新增文档


语法:

POST /索引库名/_doc/文档id

{

“字段1”: “值1”,

“字段2”: “值2”,

“字段3”: {

“子属性1”: “值3”,

“子属性2”: “值4”

},

// …

}

示例:

POST /heima/_doc/1

{

“info”: “黑马程序员Java讲师”,

“email”: “zy@itcast.cn”,

“name”: {

“firstName”: “云”,

“lastName”: “赵”

}

}

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注Java获取)

img

最后:学习总结——MyBtis知识脑图(纯手绘xmind文档)

学完之后,若是想验收效果如何,其实最好的方法就是可自己去总结一下。比如我就会在学习完一个东西之后自己去手绘一份xmind文件的知识梳理大纲脑图,这样也可方便后续的复习,且都是自己的理解,相信随便瞟几眼就能迅速过完整个知识,脑补回来。下方即为我手绘的MyBtis知识脑图,由于是xmind文件,不好上传,所以小编将其以图片形式导出来传在此处,细节方面不是特别清晰。但可给感兴趣的朋友提供完整的MyBtis知识脑图原件(包括上方的面试解析xmind文档)

image

除此之外,前文所提及的Alibaba珍藏版mybatis手写文档以及一本小小的MyBatis源码分析文档——《MyBatis源码分析》等等相关的学习笔记文档,也皆可分享给认可的朋友!

《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!
文档)

学完之后,若是想验收效果如何,其实最好的方法就是可自己去总结一下。比如我就会在学习完一个东西之后自己去手绘一份xmind文件的知识梳理大纲脑图,这样也可方便后续的复习,且都是自己的理解,相信随便瞟几眼就能迅速过完整个知识,脑补回来。下方即为我手绘的MyBtis知识脑图,由于是xmind文件,不好上传,所以小编将其以图片形式导出来传在此处,细节方面不是特别清晰。但可给感兴趣的朋友提供完整的MyBtis知识脑图原件(包括上方的面试解析xmind文档)

[外链图片转存中…(img-m3Jlro3q-1713391935487)]

除此之外,前文所提及的Alibaba珍藏版mybatis手写文档以及一本小小的MyBatis源码分析文档——《MyBatis源码分析》等等相关的学习笔记文档,也皆可分享给认可的朋友!

《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!

毫秒级本地文件搜索:基于NTFS MFT索引的轻量级检索引擎实现 文件搜索是操作系统基础能力,其性能本质取决于索引机制的设计原理。传统遍历式搜索受限于磁盘I/O与路径解析开销,而基于NTFS文件系统元数据(如MFT主文件表与USN日志)构建内存倒排索引,可绕过目录树遍历,实现毫秒级响应。这种轻量级检索技术不依赖后台服务或云端协同,具备低内存占用、高查询吞吐与强本地隐私保障等工程优势,广泛适用于内容创作、开发运维及嵌入式工具链场景。本文聚焦NTFS卷索引机制与双数组Trie实现,详解如何用C++复现稳定可控的桌面端搜索引擎。 阅读详情

相关推荐

一文读懂:CAN总线Bus-Off的触发条件与自动恢复机制

本文详细解析CAN总线Bus-Off状态的触发条件与自动恢复机制。根据ISO 11898-1标准,当发送错误计数器(TEC)超过255时节点进入Bus-Off状态,并通过检测128次总线空闲条件实现自动恢复。文章结合实战案例,探讨硬件故障、软件配置及电磁干扰等常见触发场景,并提供快慢恢复策略与调试方法,帮助工程师快速定位并解决CAN网络故障。

rgv234567的博客 360

ElasticSearch-Mapping field字段type类型

参考官方英文文档:https://www.elastic.co/guide/en/elasticsearch/reference/current/mapping.html Mapping是定义文档及其包含的字段如何存储和编制索引的过程,每个索引都有一个映射类型,用于确定文档将如何编制索引。 Meta-fields 包括文档的_index,_type,_id和_source字段 es字段数据类型: ...

小强签名设计 的博客 6903

【可不卸载重装】VS2019新建项目里没有CUDA选项

问题:VS2019 新建项目里没有CUDA选项,vs也属性没有cuda。这是因为你在Visual Studio 2019安装之前,先安装了CUDA Toolkit。

qq_62844901的博客 1319

Elasticsearch(八)类型映射详解

前言 通过前面章节的学习,我们已经可以让elasticsearch对中文分词有比较好的效果了,就是使用IK分词器,但我们也知道,elasticsearch的默认分词器是standard分词器,那如何把standard分词器切换到IK分词器呢? 我们在讲解elasticsearch的重要概念的时候我们提到了一个概念:type(类型),为了更好的理解该概念,我们还拿了关系型数据库的表来跟type对比...

街头看日出的博客 1822

避坑指南:STM32CubeMX安装后,你的第一个工程为什么中文全是乱码?

本文详细解析了STM32CubeMX安装后中文乱码问题的根源及解决方案。从诊断乱码现象到分析编码冲突背景,提供了新项目UTF-8化、旧项目GBK兼容及版本降级等多种实用方案,帮助开发者彻底解决这一常见问题。

weixin_30699955的博客 474

Echats-wordcloud 文字云图的踩坑点【Unknown series wordCloud】

一直都是报 【ECharts Unknown series wordCloud】这玩意可能要刷脸,祝你好运吧~

Sky_Bug的博客 2418

关于ElasticSearch的_type类型

7.x的版本所有的type默认为_doc(自定义type也能用,但是会提示不推荐)在6.x的版本里改为一个index只支持一个type, type可以自定义。在5.x以前的版本里边,一个index下面是支持多个type的,_type是es早期版本的设计缺陷。...

m0_67392661的博客 1720

碳纳米管NRAM:突破5纳米制程的下一代存储技术

在半导体存储领域,非易失性存储器和随机存取存储器是两大基础技术方向。传统DRAM速度快但断电易失,NAND Flash非易失但写入慢、寿命有限,两者在先进制程下都面临物理极限挑战。碳纳米管作为一种新型纳米材料,凭借其优异的导电性、机械强度和尺寸微缩潜力,为存储技术革新提供了物理基础。基于碳纳米管的NRAM技术,通过控制纳米管间的可逆接触实现电阻状态切换,兼具DRAM级速度和Flash的非易失性,同时具备近乎无限的擦写寿命和出色的CMOS工艺兼容性。这项技术不仅能满足5纳米以下制程的存储需求,在数据中心缓存、

weixin_42576804的博客 427

Elasticsearch基础2——es配置文件、jvm配置文件、log4j2.properties配置文件详解

es配置文件基本参数详解+测试 jvm配置文件参数详解 log4j2.properties日志配置我呢见核心参数

百慕卿君博客 1万+

Altium Designer差分走线实战:从规则设置到阻抗匹配的完整流程

本文详细讲解了在Altium Designer中进行差分走线的完整实战流程,涵盖从原理图定义差分对、PCB布局管理、关键设计规则设置,到利用阻抗计算工具确定线宽与间距,以及布线技巧与等长处理等核心步骤。文章旨在帮助工程师掌握高速PCB设计中差分信号传输的关键技术,确保信号完整性并实现精确的阻抗匹配。

weixin_29163857的博客 255

【数字IC设计】芯片设计中的RDC

在芯片设计中,RDC是的缩写,类似于CDC(clock domain crossing),由于现在SOC芯片是有很多ECUs组成,为了使整个系统能够快速从复位中恢复, 用户希望SOC里面每个ECU模块都可以有自己独立的异步复位信号,这样可以在出问题的时候只复位有错误逻辑的模块,而使其它模块保持正常工作。

qq_40268672的博客 2185

Elastic Search 命令详解-索引操作

Elastic Search索引操作主要包含:创建、删除、关闭和打开索引,以及索引别名的操作。其中,索引别名的操作在生产环境中使用比较广泛,可以和关闭或删除索引配合使用。在生产环境中使用索引时,都应该特别注意操作不当引起数据丢失或异常的问题。

悦读人生 5445

手把手教你学simulink(13.2)--构建一个单相并网逆变器Simulink仿真模型

基于Simulink的单相并网逆变器项目的详细仿真实例。这个项目将重点放在逆变器的详细建模、最大功率点跟踪(MPPT)控制策略、并网控制和仿真分析上。我们将使用MATLAB/Simulink来构建整个系统,并通过具体的代码和模块来实现各个功能。

MHD0815的博客 545

【Elasticsearch学习之三】Elasticsearch 搜索引擎案例

环境  虚拟机:VMware 10   Linux版本:CentOS-6.5-x86_64   客户端:Xshell4  FTP:Xftp4  jdk8  elasticsearch-2.2.0 第一步:获取数据主流搜索引擎,会使用爬虫,来获取网站的html数据,常用的工具有nutch,Python(主流),wget(c语言)这里使用wget模拟#安装wgetyum install wget #...

weixin_30252709的博客 397

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

使用canal增量同步ES索引库数据

canal主要用途是基于 MySQL 数据库增量日志解析,并能提供增量数据订阅和消费,应用场景十分丰富。github地址:https://github.com/alibaba/canal版本下载地址:https://github.com/alibaba/canal/releases文档地址:https://github.com/alibaba/canal/wiki/Docker-QuickStartCanal应用场景。

ZHUSHANGLIN的博客 1821

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

搜索引擎学习(二)Lucene创建索引

PS:需要用到的jar包: 代码实现 1、工程结构 2、设置工程依赖的jar包 3、代码实现 /** * Lucene入门 * 创建索引 */ public class CreateIndex { /** * 创建索引 * 第一步:创建java工程,导入相关的jar包 * 第二步...

weixin_30270561的博客 111

搜索引擎学习(三)Lucene查询索引

一、查询理论 创建查询:构建一个包含了文档域和语汇单元的文档查询对象。(例:fileName:lucene) 查询过程:根据查询对象的条件,在索引中找出相应的term,然后根据term找到对应的文档id列表。 二、代码分析 实现代码 /** * Lucene入门 * 查询索引 */ public class QueryIndex { /** ...

weixin_30270561的博客 125

搜索引擎学习(五)Lucene操作索引

一、代码分析 /** * Lucene入门 * 操作索引 */ public class ManageIndex { public IndexWriter getIndexWriter() throws Exception { //设置索引库的位置 Directory directory = FSDirectory.o...

weixin_30270561的博客 110

Lucene索引库查询

对要搜索的信息创建Query查询对象,Lucene会根据Query查询对象生成最终的查询语法,类似关系数据库Sql语法一样Lucene也有自己的查询语法,比如:“name:lucene”表示查询Field的name为lucene的文档信息。 可通过两种方法创建查询对象: 1)使用Lucene提供Query子类 2)使用QueryParse解析查询表达式 TermQuery 通过项查询,T...

aojinkun2397的博客 117

lucene的基本使用

Lucene lucene使用总结 1.穿件索引库 1)确定索引路径   String path = "F:\\indexs"; 2)关联索引路位置 FSDirectory directory = FSDirectory.(new File(path));      3)创建IK分词器类型  Analyzer analyzer = new IKAnalyzer(); 4)

bellus 695

Canal增量数据同步利器

canal主要用途是基于 MySQL 数据库增量日志解析,并能提供增量数据订阅和消费,应用场景十分丰富。GitHub - alibaba/canal: 阿里巴巴 MySQL binlog 增量订阅&消费组件Canal应用场景1.电商场景下商品、用户实时更新同步到至Elasticsearch、solr等搜索引擎;2.价格、库存发生变更实时同步到redis;3.数据库异地备份、数据同步;4.代替使用轮询数据库方式来监控数据库变更,有效改善轮询耗费数据库资源。MySQL主从复制原理。

luoci1的博客 419

Lucene介绍与入门使用

https://www.cnblogs.com/xiaobai1226/p/7652093.html//创建索引    public void testCreateIndex() throws IOException{        //指定索引库的存放位置Directory对象        Directory directory = FSDirectory.open(new File("E:\...

qingfeng2556的博客 283

all-MiniLM-L6-v2实战教程:结合FAISS构建毫秒级响应的本地向量检索库

本文介绍了如何在星图GPU平台上自动化部署all-MiniLM-L6-v2镜像,快速构建本地语义检索系统。该轻量级嵌入模型结合FAISS可实现毫秒级文档相似度搜索,典型应用于产品手册智能问答、内部知识库检索等场景,全程无需GPU依赖,兼顾效率与隐私。

weixin_29496633的博客 584

04.索引的建立与维护

建立索引 public void createIndex() throws IOException { //先指定索引库存放的位置 String dumpPath = "D:\\temp\\1110"; Directory directory = FSDirectory.open(new File(dumpPath)); //索引库存放在内存中 //Directory d...

weixin_30902675的博客 141

Lucene分析器

默认分析器 查看之前代码,在new IndexWriterConfig()的时候没有指定分析器就调用了默认的分析器StandardAnalyzer,默认的标准的分析器就是对每个单词以空格进行拆分,而对于汉字就把每个汉字都拆分开为一个一个的字符。 IndexWriterConfig config = new IndexWriterConfig(); IndexWriter indexWri...

aojinkun2397的博客 191

Lucene创建索引

引入相关jar包 <dependency> <groupId>org.jsoup</groupId> <artifactId>jsoup</artifactId> <version>1.12.1</version> </dependency> <dependency>

qq_29188567的博客 843
上一篇: 【 k8s 概念(十)】Kubernetes Deployment(1)
下一篇: 【Java数据结构】二叉搜索树增、插,删,创详解(1)
普通网友
博客等级 码龄3年 8469粉丝 668原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值