黑马es学习

es

  • 0. 基础概念
    • 0.1 倒排索引
    • 0.2 文档、索引
    • 0.3 与mysql对比
  • 1 基本操作
    • 1.1 mapping 索引库操作
    • 1.2 单个文档CRUD
  • 3. DSL查询
    • 3.1 查询所有
    • 3.2 全文检索
    • 3.3 精确查询
    • 3.4 复合查询-相关性得分
    • 3.5 分页
    • 3.6 高亮
    • 3.7 总结
  • 2. RestClient
  • 4. aggs聚合
    • 4.1 bucket(分桶)聚合
    • 4.2 metrics聚合
  • 5. mysql与es数据同步
  • 6. es集群
  • extra:es集群数据去重

黑马视频

官方使用手册

java client


0. 基础概念

es本质:一个基于Lucence开发出来的分布式搜索引擎

在这里插入图片描述

0.1 倒排索引

在这里插入图片描述

创建倒排索引后给词条创建索引,总计进行了两次查询

0.2 文档、索引

文档:一条数据记录
索引:类型相同的文档的集合

在这里插入图片描述

0.3 与mysql对比

交易等一致性要求高的mysql做
大范围搜索es做

1 基本操作

1.1 mapping 索引库操作

在这里插入图片描述
举例:注意object嵌套关系

在这里插入图片描述

禁止修改索引库,但是可以添加新字段

1.2 单个文档CRUD

文档查询:

在这里插入图片描述
_source字段下是查询到的原始文档

文档修改:
全量修改:旧的直接删除,新增改后的文档
增量修改:在旧的上面修改

在这里插入图片描述

3. DSL查询

dsl常见查询分类:

在这里插入图片描述

3.1 查询所有

在这里插入图片描述

3.2 全文检索

在这里插入图片描述
muti_match的方式能够额外指定针对哪些字段进行查询(任意一个字段包含即可)

3.3 精确查询

值是确定的,不可分割,不可分词,完全匹配

在这里插入图片描述

3.4 复合查询-相关性得分

相关性得分算法:(第三种 default)

es 自带的 query score:
在这里插入图片描述

自定义function score函数:

在这里插入图片描述

自定义score函数时主要确定三个部分:

  1. 哪些文档将进行加权
  2. 算分函数function score如何定义
  3. function score怎么与原始得分query score(BM25)进行加权

demo:

在这里插入图片描述

3.5 分页

深度分页问题:

在这里插入图片描述
from+size超过1w会直接报错,如果非要查一万条,不太现实,实际生产应用中会从业务层面避免查询1w条(从业务上拒绝),比如百度就是默认最多查70页,每页显示10条数据

在这里插入图片描述

3.6 高亮

高亮的结果解析是与_source同级的,需要额外注意:

在这里插入图片描述

3.7 总结

在这里插入图片描述

2. RestClient

将dsl语句对应到Java

在这里插入图片描述
在这里插入图片描述
上图中涉及了两个核心api:
source.query()/source()等:
在这里插入图片描述

QueryBuilders.各种查询query:
在这里插入图片描述

解析查询响应结果:

在这里插入图片描述

在这里插入图片描述

常见查询:

全文检索查询:
在这里插入图片描述
精确查询:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
聚合:

在这里插入图片描述

4. aggs聚合

聚合操作与query同级,用于对文档进行统计、分析、计算(min/max/avg…)

常见聚合方式:

在这里插入图片描述

4.1 bucket(分桶)聚合

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

在这里插入图片描述
默认按照doc_count降序排序,如若修改排序方式:

在这里插入图片描述

在这里插入图片描述

4.2 metrics聚合

在这里插入图片描述
红框:

聚合名称:scoreAgg
聚合类型:stats
聚合字段:score

5. mysql与es数据同步

在这里插入图片描述

方案一缺点:业务之间耦合度强,调用耗时

在这里插入图片描述
方案二缺点:依赖mq的可靠性

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

demo:基于mq的实现方式

mq的消息模式:其中交换机用于将消息路由

在这里插入图片描述

定义模式:
在这里插入图片描述
然后定义绑定关系:将某个队列绑定到指定交换机、用哪个routingKey:

在这里插入图片描述

消息发送(两种消息:增改(公用一个key)和删(另一个key)):

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

消息监听与消费:

定义监听:
在这里插入图片描述

具体实现:

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

6. es集群

extra:es集群数据去重

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/350621.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

深度学习 - CNN

第一部分:基础知识 1. 什么是卷积神经网络(CNN) 定义和基本概念 卷积神经网络(CNN)是一种专门用于处理具有网格结构数据(如图像)的深度学习模型。它们在图像识别和计算机视觉领域表现尤为突出…

虚函数机制-动态绑定的应用

虚函数使得程序在运行的时候根据指针指向对象的类型来确定调用哪个函数。 下图中:都为静态绑定。因为在编译器就确定了可以调用的函数 此时当基类指针指向派生类对象时,因为没有virtual关键字,所以在编译阶段就根据指针类型确定了要指向的函…

专家解读 | NIST网络安全框架(3):层级配置

NIST CSF在核心部分提供了六个类别的关键功能和子功能,并围绕CSF的使用提供了层级(Tier)和配置(Profile)两种工具,使不同组织和用户更方便有效地使用CSF,本文将深入探讨CSF层级和配置的主要内容…

183.二叉树:二叉搜索树中的众数(力扣)

代码解决 /*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode() : val(0), left(nullptr), right(nullptr) {}* TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}* Tre…

STM32 printf 重定向到CAN

最近在调试一款电机驱动板 使用的是CAN总线而且板子上只有一个CAN 想移植Easylogger到上面试试easylogger的效果&#xff0c;先实现pritnf的重定向功能来打印输出 只需要添加以下代码即可实现 代码 #include <stdarg.h> uint8_t FDCAN_UserTxBuffer[512]; void FDCAN_p…

shell文本三剑客 awk 和 grep

awk 前言 AWK是一种优良的文本处理工具。它不仅是 Linux中也是任何环境中现有的功能最强大的数据处理引擎之一。 Linux中最常用的文本处理工具有grep&#xff0c;sed&#xff0c;awk。行内将之称为文本三剑客&#xff0c;就功能量和效率来看&#xff0c;awk是当之无愧的文本三…

本地密码记录工具-KeePass

文章目录 软件界面软件下载KeePass配置KeePass修改中文创建数据库配置数据库锁定配置账户密码为不同应用配置账号密码插件安装及使用 数据库同步 在此之前&#xff0c;没有使用过类似的账户密码记录工具&#xff0c;甚至完全没有接触过&#xff0c;由于Edge浏览器自带保存密码并…

【Kafka】Kafka Producer 分区-05

【Kafka】Kafka Producer 分区-05 1. 分区的好处2. 分区策略2.1 默认的分区器 DefaultPartitioner 3. 自定义分区器 1. 分区的好处 &#xff08;1&#xff09;便于合理使用存储资源&#xff0c;每个Partition在一个Broker上存储&#xff0c;可以把海量的数据按照分区切割成一块…

什么是DMZ?路由器上如何使用DMZ?

文章目录 📖 介绍 📖🏡 演示环境 🏡📒 DMZ 📒🚀 DMZ的应用场景💡 路由器设置DMZ🎈 注意事项 🎈⚓️ 相关链接 ⚓️📖 介绍 📖 在网络管理中,DMZ(Demilitarized Zone,隔离区)是一个特殊的网络区域,常用于将公共访问和内部网络隔离开来。DMZ功能允许…

完美的移动端 UI 风格让客户无可挑剔

完美的移动端 UI 风格让客户无可挑剔

GDB:从零开始入门GDB

目录 1.前言 2.开启项目报错 3.GDB的进入和退出 4.GDB调试中查看代码和切换文件 5.GDB调试中程序的启动和main函数传参 6.GDB中断点相关的操作 7.GDB中的调试输出指令 8.GDB中自动输出值指令 9.GDB中的调试指令 前言 在日常开发中&#xff0c;调试是我们必不可少的技能。在专业…

算法day26

第一题 429. N 叉树的层序遍历 本题的要求我们可以通过队列来辅助完成层序遍历&#xff1b; 如下图的n叉树&#xff1a; 步骤一&#xff1a; 我们定义一个队列&#xff0c;先进行根节点入队列操作&#xff1b; 步骤二&#xff1a; 我们进行当前队列每一个元素的出队列操作&…

功能强大的API函数FindFirstFile使用介绍(附源码)

在处理文件的相关代码中,会频繁使用到Windows系统API函数FindFirstFile,这个函数功能很强大,很多功能都不开它。本文就根据我们在项目中使用该函数的情况,来大概地梳理一下使用FindFirstFile都可以实现哪些常用的功能。 1、FindFirstFile函数声明与WIN32_FIND_DATA结构体 我…

接口测试详解

接口测试详解 本文主要讲软件接口 一、什么是接口&#xff1f;硬件接口&#xff1a;硬件接口指的是硬件提供给外界的一种实体。主要作用是内部数据分离出外 部的沟通方法 目的是&#xff1a;沟通外部来改变内部的数据。如&#xff1a;USB接口&#xff0c;投影仪接口 软件接口…

Hadoop 2.0:主流开源云架构(三)

目录 四、Hadoop 2.0体系架构&#xff08;一&#xff09;Hadoop 2.0公共组件Common&#xff08;二&#xff09;分布式文件系统HDFS&#xff08;三&#xff09;分布式操作系统Yarn&#xff08;四&#xff09;Hadoop 2.0安全机制简介 四、Hadoop 2.0体系架构 &#xff08;一&…

c++使用nlohmann读取json文件

下载&#xff1a; GitHub - nlohmann/json: JSON for Modern C 解压&#xff1a; 包含头文件&#xff1a; 要包含的头文件和要使用的命名空间&#xff1a; #include <nlohmann/json.hpp>using json nlohmann::json; 测试文件&#xff1a; 代码&#xff1a; #include…

Vscode中使用make命令

前言 需要注意&#xff0c;如下操作需要进行网络代理&#xff0c;否则会出现安装失败的情况 安装 第一步 — 安装MingGW &#xff08;1&#xff09;进入官网下载 &#xff08;2&#xff09;下载完成之后&#xff0c;双击exe文件 &#xff08;3&#xff09;点击Install &#x…

远程桌面端口,远程桌面改端口有哪些方法

方法一&#xff1a;通过修改注册表 步骤一&#xff1a;打开注册表编辑器 按下 Windows键R 打开“运行”对话框。输入 regedit 并按 Enter 打开注册表编辑器。 步骤二&#xff1a;定位到远程桌面服务的端口设置 导航至第一个注册表路径&#xff1a;HKEY_LOCAL_MACHINE\SYSTE…

抢占人工智能行业红利,前阿里巴巴产品专家带你15天入门AI产品经理

前言 当互联网行业巨头纷纷布局人工智能&#xff0c;国家将人工智能上升为国家战略&#xff0c;藤校核心课程涉足人工智能…人工智能领域蕴含着巨大潜力&#xff0c;早已成为业内共识。 面对极大的行业空缺&#xff0c;不少人都希望能抢占行业红利期&#xff0c;进入AI领域。…

多线程中run()和start()的区别

我们知道&#xff0c;在多线程中 Thread thread new Thread(runnable); thread.start();以及 thread.run();都可以执行runnable中run方法下的代码&#xff0c;但是二者又有所不同 下面给出一段代码用以体现二者的区别&#xff1a; 以下代码中&#xff0c;通过thread.start()启…