springCloud_day08(Elasticsearch)

目录

[Elasticsearch01-01. 为什么学习 elasticsearch](#Elasticsearch01-01. 为什么学习 elasticsearch)

[Elasticsearch01-02. 初识 ES - 认识和安装 ES](#Elasticsearch01-02. 初识 ES - 认识和安装 ES)

[Elasticsearch01-03. 初识 ES - 倒排索引](#Elasticsearch01-03. 初识 ES - 倒排索引)

问题:为什么一个叫做正向索引,一个叫做倒排索引呢?

[Elasticsearch01-04. 初识 ES-IK 分词器](#Elasticsearch01-04. 初识 ES-IK 分词器)

[Elasticsearch01-05. 初识 ES - 基本概念](#Elasticsearch01-05. 初识 ES - 基本概念)

[Elasticsearch01-06. 索引库操作 - Mapping 映射属性](#Elasticsearch01-06. 索引库操作 - Mapping 映射属性)

问题:分词器有哪几种?

[Elasticsearch01-07. 索引库操作 - 索引库的 CRUD](#Elasticsearch01-07. 索引库操作 - 索引库的 CRUD)

问题:为什么索引库添加字段不用post而是put?

[Elasticsearch01-08. 文档操作 - 文档 CRUD](#Elasticsearch01-08. 文档操作 - 文档 CRUD)

问题:全量修改和局部修改用的restful关键字?

[Elasticsearch01-09. 文档操作 - 批量处理](#Elasticsearch01-09. 文档操作 - 批量处理)

[Elasticsearch01-10.JavaRestClient - 客户端初始化](#Elasticsearch01-10.JavaRestClient - 客户端初始化)

问题:@BeforeEach作用?

[Elasticsearch01-11.JavaRestClient - 商品的 Mapping映射属性](#Elasticsearch01-11.JavaRestClient - 商品的 Mapping映射属性)

[Elasticsearch01-12.JavaRestCliet - 索引库操作](#Elasticsearch01-12.JavaRestCliet - 索引库操作)

问题:判断索引库是否存在?

[Elasticsearch01-13.JavaRestClient - 新增文档](#Elasticsearch01-13.JavaRestClient - 新增文档)

[Elasticsearch01-14.JavaRestClient - 文档的 CRUD](#Elasticsearch01-14.JavaRestClient - 文档的 CRUD)

[Elasticsearch01-15.JavaRestClient - 文档批处理](#Elasticsearch01-15.JavaRestClient - 文档批处理)

末尾页:


Elasticsearch01-01. 为什么学习 elasticsearch

Elasticsearch01-02. 初识 ES - 认识和安装 ES

Elasticsearch01-03. 初识 ES - 倒排索引

问题:为什么一个叫做正向索引,一个叫做倒排索引呢?

  • 正向索引 是最传统的,根据id索引的方式。但根据词条查询时,必须先逐条获取每个文档,然后判断文档中是否包含所需要的词条,是根据文档找词条的过程。

  • 而倒排索引 则相反,是先找到用户要搜索的词条,根据词条得到保护词条的文档的id,然后根据id获取文档。是根据词条找文档的过程。

是不是恰好反过来了?

那么两者方式的优缺点是什么呢?

正向索引:

  • 优点:

    • 可以给多个字段创建索引

    • 根据索引字段搜索、排序速度非常快

  • 缺点:

    • 根据非索引字段,或者索引字段中的部分词条查找时,只能全表扫描。

倒排索引:

  • 优点:

    • 根据词条搜索、模糊搜索时,速度非常快
  • 缺点:

    • 只能给词条创建索引,而不是字段

    • 无法根据字段做排序

Elasticsearch01-04. 初识 ES-IK 分词器

Elasticsearch01-05. 初识 ES - 基本概念

Elasticsearch01-06. 索引库操作 - Mapping 映射属性

问题:分词器有哪几种?

ik_smart

ik_max_word

Elasticsearch01-07. 索引库操作 - 索引库的 CRUD

问题:为什么索引库添加字段不用post而是put?

Elasticsearch01-08. 文档操作 - 文档 CRUD

问题:全量修改和局部修改用的restful关键字?

全量修改 相当于先删除再新增(相当于修改操作)走put,url中是_doc

局部修改 相当于 post,url中是_update

Elasticsearch01-09. 文档操作 - 批量处理

Elasticsearch01-10.JavaRestClient - 客户端初始化

问题:@BeforeEach作用?

@BeforeEach 是 JUnit 5(Jupiter) 单元测试框架的核心注解,作用是:

在当前测试类的 每一个 @Test 测试方法执行之前,自动执行被它标注的方法。

Elasticsearch01-11.JavaRestClient - 商品的 Mapping映射属性

Elasticsearch01-12.JavaRestCliet - 索引库操作

问题:判断索引库是否存在?

GET /hotel

Elasticsearch01-13.JavaRestClient - 新增文档

java 复制代码
@Test
void testAddDocument() throws IOException {
    // 1.根据id查询商品数据
    Item item = itemService.getById(100002644680L);
    // 2.转换为文档类型
    ItemDoc itemDoc = BeanUtil.copyProperties(item, ItemDoc.class);
    // 3.将ItemDTO转json
    String doc = JSONUtil.toJsonStr(itemDoc);

    // 1.准备Request对象
    IndexRequest request = new IndexRequest("items").id(itemDoc.getId());
    // 2.准备Json文档
    request.source(doc, XContentType.JSON);
    // 3.发送请求
    client.index(request, RequestOptions.DEFAULT);
}

Elasticsearch01-14.JavaRestClient - 文档的 CRUD

Elasticsearch01-15.JavaRestClient - 文档批处理

末尾页:

本文摘要:Elasticsearch学习笔记,介绍了倒排索引原理(与正向索引对比)、IK分词器使用、索引库CRUD操作、文档批处理等核心概念。重点讲解了全量修改(PUT)与局部修改(POST)的区别,以及JavaRestClient客户端的实践应用,包括索引库存在性判断、文档新增等代码示例。同时解答了@BeforeEach注解在JUnit5测试中的作用。

相关推荐
_Evan_Yao2 小时前
Redis 缓存穿透、击穿、雪崩,一次讲清!
java·spring·mybatis
梓豪csd3 小时前
消息订阅中心:谁该收到哪条通知
java·开发语言·人工智能·低代码·自动化·1024程序员节
秋饼3 小时前
Spring AI 2.1 Message Parts 深度实战:推理签名回放与跨轮记忆持久化的源码级落地
java·ai·技术分享·后端开发
thefool1122664 小时前
TCP 1
java·1024程序员节
金銀銅鐵6 小时前
[Java] 用 GUI 展示 EnumSet 增减元素时的内部变化(下)
java·后端·ai编程
AI人工智能+电脑小能手6 小时前
一次请求打几个下游,这个Java并行任务工具类6个方法按序聚合
java·线程池·并发编程·1024程序员节·批量处理·并行任务
paopaokaka_luck8 小时前
心理咨询管理系统(WebSocket实时沟通、基于用户的协同过滤、 ECharts多维分析、 预约业务流程、预约校验与定时处理)
java·vue.js·spring boot·mysql·spring·echarts·1024程序员节
2301_32241428048 小时前
springboot农产品交易平台的设计与实现08055-计算机毕设 原创(免费领源码+部署教程+开发环境)
java·spring boot·redis·mysql·tomcat·maven·mybatis
考虑考虑9 小时前
JDK26的JEP 500属性
java·后端·java ee
LMT流氓兔9 小时前
第五单元——第十二课:把脚本整理成项目
java·数据库·python·langchain·1024程序员节