Elasticsearch 2025/3/7

高性能分布式搜索引擎。

数据库模糊搜索比较慢,但用搜索引擎快多了。

下面是一些搜索引擎排名

Lucene是一个Java语言的搜索引擎类库(一个工具包),apache公司的顶级项目。

优势:易扩展、高性能(基于倒排索引)
elasticsearch优势:

支持分布式,可水平扩展

提供Restful接口,可被任何语言调用

elasticsearch随着技术发展越来越完善,已经不是一个孤立的技术了,有一套完整的技术栈,简称ELK(kibana、Logstash、Beats),被广泛应用在日志数据分析、实时监控等领域。

安装ES

推荐Docker命令一键安装。

安装Kibana

一个图形界面的工具,会帮助我们连接ES,提供图形化的操作,还能自动补全。

推荐Docker命令一键安装。

Kibana提供了一个工具Dev tool,它可以帮助我们向ES发送HTTP请求,而且自带提示!!!

倒排索引

传统MySQL关系数据库只会给文档建立id索引。

而elasticsearch采用倒排索引:不仅会给文档建立id索引,还会给拆开的词条建立索引。

  • 文档:每条数据就是一个文档
  • 词条:文档按照语义分成的词语

会给词条建一个索引,将来根据词条来检索速度会非常快。

以下图为例,其实我们搜了两次,第一次拿词条来词条列表找,第二次拿着找到的文档id到文档列表里找文档。而传统关系数据库,只能全表扫描。

正向索引先去找文档,看文档里是否包含词条。

倒排索引先去找词条,得到文档id,再去找文档。(要经历两次检索)

IK分词器

英文分词很简单,因为单词间有空格。仲文分词必须按语义进行分析。

把这个插件(ik)放到插件目录里。

analyzer可以中文分词的:ik_smart、ik_max_word

IK分词器允许词典扩展。

ES核心概念

叫索引可能会混淆,我们通常把他理解成索引库。因为MySQL里给id加的那个也叫索引。索引和数据库里的表table的概念有点接近。要保证json文档他们的结构一致、数据类型一致,叫做映射。

下图是ES和MySQL数据库一些概念的对比👇

Mapping映射属性

Mapping映射类似于建表

keyword不可拆分的词

索引库操作

keyword不可拆,text可拆

在elasticsearch里,不允许对索引库做修改操作(指不能对已有的索引库字段做修改,但允许添加新的字段)。

文档操作

上节课学完索引库的各种操作,相当于在MySQL里去创建表,表有了之后,我们要学着操作数据。在索引库里,我们操作的是文档。

文档CRUD

完全符合Restful风格

全量修改,改的话全部都要改。

增量/局部修改,修改指定的。

批量处理

一个一个文档处理效率太低,这次学习批量处理。

JavaRestClient

ES给我们提供的java客户端,JavaRestClient。

这套客户端就是帮我们向restful接口发请求的。

客户端初始化

步骤:引依赖->对SpringBoot原有默认的ES版本进行覆盖->初始化RestHighLevelClient

例:

商品表Mapping映射

上节课已经完成es的java客户端的初始化,之后的几节课我们将学习如何利用这个客户端实现索引库及文档的各种操作。

创建商品索引库首先要确定商品的Mapping映射。

索引库操作

文档操作

上节课学习es的java客户端操作索引库的各种API,并创建了一个索引库。有了索引库我们就可以向里面写入文档,进行文档操作了。

source 源

request.source请求参数里的数据直接用数据库里的。但是数据库里的和索引库的字段不完全一样,我们要怎样保证他们一样呢?

首先定义一个实体,这个索引要和索引库的mapping映射结构一致。

直接复制一份po,然后把其中不需要的属性删掉。(简单无需技术含量)

根据id查数据库,查到数据库数据转化为文档数据,用到糊涂工具包BeanUtil.copyProperties(item,ItemDoc.class)拷贝数据。

得到的文档数据放到source方法请求参数必须是JSON,用工具类JSONUtil转换

新增文档操作如上,接下来我们学习文档其他增删改查的API。

发送请求结果获取到的request对象里面是完整的Json数据

而解析结果就是获取到的request对象里的source

批处理

相关推荐
老蒋新思维16 小时前
创客匠人启示:破解知识交付的“认知摩擦”——IP、AI与数据的三角解耦模型
大数据·人工智能·网络协议·tcp/ip·重构·创客匠人·知识变现
爱埋珊瑚海~~16 小时前
基于MediaCrawler爬取热点视频
大数据·python
工程师丶佛爷16 小时前
从零到一MCP集成:让模型实现从“想法”到“实践”的跃迁
大数据·人工智能·python
2021_fc16 小时前
Flink笔记
大数据·笔记·flink
Light6017 小时前
数据要素与数据知识产权交易中心建设专项方案——以领码 SPARK 融合平台为技术底座,构建可评估、可验证、可交易、可监管的数据要素工程体系
大数据·分布式·spark
zyxzyx4917 小时前
AI 实战:从零搭建轻量型文本分类系统
大数据·人工智能·分类
五阿哥永琪18 小时前
SQL中的函数--开窗函数
大数据·数据库·sql
程序员小羊!18 小时前
数仓数据基线,在不借助平台下要怎么做?
大数据·数据仓库
火山引擎开发者社区19 小时前
两大模型发布!豆包大模型日均使用量突破 50 万亿 Tokens
大数据·人工智能
GEO-optimize20 小时前
2025年末GEO服务商推荐甄选:综合实力测评及优选指南
人工智能·搜索引擎·geo