目录

数据聚合

聚合的种类

DSL实现聚合

桶聚合

度量聚合

RestAPI实现聚合

多条件聚合

自动补全

拼音分词器

自定义分词器

自动补全查询

实现搜索框自动补全

数据同步

数据同步思路分析

实现elasticsearch与数据库数据同步

集群

搭建ES集群

集群脑裂问题

集群故障转移

集群分布式存储

集群分布式查询


数据聚合

聚合的种类

聚合可以实现对文档数据的统计、分析、运算。聚合常见的有三类:

桶聚合:用来对文档做分组

           TermAggregation:按照文档字段值分组

           Date Histogram:按照日期阶梯分组,例如一周为一组,或者一月为一组

度量聚合:用以计算一些值,比如:最大值、最小值、平均值等

           Avg:求平均值

          Max:求最大值

          Min:求最小值

          Stats:同时求max、min、avg、sun等

管道聚合:其它聚合结果为基础做聚合

参与聚合的字段类型必须是:

keyword

数值

日期

布尔

DSL实现聚合

桶聚合

默认情况下,桶聚合会统计桶内的文档数量,记为_count,并且按照_count 降序排序。我们可以修改结果排序方式:

 默认情况下,桶聚合是对索引库的所有文档做聚合,我们可以限定要聚合的文档范围,只要添加query条件即可:

度量聚合

例如,我们要求获取每个品牌的用户评分的min、max、avg等值.

RestAPI实现聚合

聚合请求的构造

聚合结果的解析

多条件聚合

多条件聚合构建

结果解析

自动补全

拼音分词器

使用拼音分词

要实现根据字母做补全,就必须对文档按照拼音分词。插件:infinilabs/analysis-pinyin: 🛵 This Pinyin Analysis plugin is used to do conversion between Chinese characters and Pinyin.

下载完将压缩包解压到es的plugins目录即可

自定义分词器

Elasticsearch 中分词器(Analyzer)的组成包含三部分:

  1. Character Filters(字符过滤器)

    • 在 Tokenizer 之前对原始文本进行预处理。

    • 例如:删除特殊字符、替换字符(如将 & 替换为 and)。

  2. Tokenizer(分词器)

    • 将文本按照特定规则切割成词条(Term)。

    • 例如:

      • keyword:不分词,将整个文本作为一个词条。

      • ik_smart:智能切分(粗粒度分词)。

  3. Token Filters(词条过滤器)

    • 对 Tokenizer 输出的词条进行进一步处理。

    • 例如:大小写转换、同义词处理、拼音处理等。

我们可以在创建索引库时,通过setting来配置自定义的analyzer(分词器):

自定义分词器配置

拼音分词器适合在创建倒排索引的时候使用,但不能在搜索的时候使用。

因此字段在创建倒排索引时应该用my_analyzer分词器;字段在搜索时应该使用ik__smart分词器;

自动补全查询

es提供了Completion Suggerter查询来实现自动补全功能。这个查询会匹配以用户输入内容开头的词条并返回。为了提高补全查询的效率,对于文档中字段的类型有一些约束:

  参与补全查询的字段必须是completion类型。

  

字段的内容一般是用来补全的多个词条形成的数组

查询语法

实现搜索框自动补全

1.修改索引库,设置自定义拼音分词器

2.修改索引库的name、all字段,使用自定义分词器

3.索引库添加一个新字段suggestion,类型为completion 字段,使用自定义分词器

4.给实体类添加suggestion字段,内容包含所需要补词的内容

5.重新导入数据

RestAPI实现自动补全

结果解析

数据同步

数据同步问题分析

es中酒店数据来自于mysql数据库,因此mysql数据发生改变时,es也必须跟着改变,这个就是es与mysql之间的数据同步。

数据同步思路分析

方案一:同步调用

优点:实现简单,粗暴

缺点:耦合度高

方案二:异步通知

优点:低耦合,实现难度一般

缺点:依赖mq的可靠性

方案三:监听binlog

优点:完全接触服务间耦合

缺点:开启binlog增加数据库负担、实现复杂度高

实现elasticsearch与数据库数据同步

利用MQ实现mysql与es数据同步

步骤:

导入数据

声明exchange、queue、RoutingKey

完成数据库中增、删、改业务并完成消息发送

完成消息监听并且更新es中数据

导入MQ依赖

配置MQ

集群

ES集群结构

单机的es做数据存储,必然面临两个问题:海量的数据存储问题、单点故障问题。

海量数据存储问题:将索引库从逻辑上拆分为N个分片,存储到多个节点

单点故障问题:将分片数据在不同节点备份

搭建ES集群

利用docker容器模拟3个es的节点。

集群脑裂问题

集群故障转移

集群分布式存储

集群分布式查询

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

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

相关文章

java:接口与实现类

1. Java 基础层面接口(Interface) 只是方法的定义/规范,里面没有真正的逻辑。例如:public interface IBookService {boolean save(Book book); }👉 这里只说明了:我要有一个 save 方法,但“怎么…

Chrome 插件开发实战:从入门到进阶

1.1 Chrome 插件的魅力与应用场景Chrome 插件是增强 Chrome 浏览器功能的得力助手,能实现广告拦截、密码管理、标签管理等实用功能。在日常办公中,我们可以借助插件提升效率,如自动填充表单、快速保存网页内容;在浏览网页时&#…

通过官方文档详解Ultralytics YOLO 开源工程-熟练使用 YOLO11实现分割、分类、旋转框检测和姿势估计(附测试代码)

目录 前言: 1.了解ultralytics工程与yolo模型 1.1 yolo11可以为我们做些什 1.2 yolo11模型的高性能 1.3 对于yolo11一些常见的问题 1.3.1 YOLO11 如何以更少的参数实现更高的精度? 1.3.2 YOLO11 可以部署在边缘设备上吗? 2. 深入了解y…

vue实现小程序oss分片上传

随着小程序越来越普及,小程序上传文件必不可少,那么上传的文件大小就不可控了,小则几mb,大到好几百mb,小文件还可以,但是一到超过200mb或稍微再大些的小程序就很容易上传失败,导致功能不能继续进行。以下我们就来解决这个问题,将大文件实现分片上传 温馨提示,不要看内…

14.Shell脚本修炼手册--玩转循环结构(While 与 Until 的应用技巧与案例)

while 循环和 until 循环的应用实践 文章目录while 循环和 until 循环的应用实践当型和直到型循环:两种 "重复" 的逻辑while 循环:满足条件就继续until 循环:不满足条件就继续基础示例:从简单场景学用法示例 1&#xff…

chromadb使用hugging face模型时利用镜像网站下载注意事项

chromadb默认使用sentence-transformers/all-MiniLM-L6-v2的词嵌入(词向量)模型,如果在程序首次运行时,collection的add或query操作时如果没有指定embeddings或query_embeddings,程序会自动下载相关嵌入向量模型&#…

基于大模型的对话式推荐系统技术架构设计

注:此文章内容均节选自充电了么创始人,CEO兼CTO陈敬雷老师的新书《GPT多模态大模型与AI Agent智能体》(跟我一起学人工智能)【陈敬雷编著】【清华大学出版社】 清华《GPT多模态大模型与AI Agent智能体》书籍配套视频课程【陈敬雷…

第1章 React组件开发基础

在掌握React开发之前,我们需要先建立扎实的组件开发基础。这些基础知识不仅影响你的开发效率,更决定了应用程序的性能、可维护性和团队协作的顺畅程度。 本章将深入探讨React组件开发的核心技巧,从JSX语法优化到组件架构设计,帮你建立正确的React开发思维模式。 🗂️ 本…

【yocto】Yocto Project 配置层(.conf)文件语法详解

【加关注,不迷路,持续输出中...】Yocto Project 是一个开源的嵌入式 Linux 系统构建框架,其核心是通过元数据(Metadata)来定义如何构建系统。这些元数据主要包括配方(.bb / .bbappend)、配置&am…

知识蒸馏 Knowledge Distillation 序列的联合概率 分解成 基于历史的条件概率的连乘序列

知识蒸馏 Knowledge Distillation 序列的联合概率 分解成 基于历史的条件概率的连乘序列 flyfish 代码实践 论文 Generalized Knowledge Distillation (GKD) On-Policy Distillation of Language Models: Learning from Self-Generated Mistakes 自回归分解 将 “序列的联合…

React15.x版本 子组件调用父组件的方法,从props中拿的,这个方法里面有个setState,结果调用报错

在React 15.x中,子组件通过props调用父组件包含setState的方法时出现错误,最常见的原因是父组件方法的this指向丢失,导致调用setState时出现Cannot read property setState of undefined之类的错误。 核心原因 React类组件的方法默认不会绑定…

交叉编译.so到鸿蒙使用

以下是在 Ubuntu 20.04 系统上的操作,tpc_c_cplusplus 他是把编译的流程都给写进去了,你只需要关注你要编译的库配置好环境就行了。 第一步:下载 tpc_c_cplusplus 仓库地址: GitCode - 全球开发者的开源社区,开源代码托管平台…

LLaMA-Factory 中配置文件或命令行里各个参数的含义

常见参数分类 & 含义对照表: 🔹模型相关参数含义model_name_or_path基础模型的路径(本地或 HuggingFace Hub 上的名字,如 meta-llama/Llama-2-7b-hf)adapter_name_or_pathLoRA/Adapter 权重路径(如果要…

JavaScript 性能优化实战技术文章大纲

一、引言1.1 背景阐述在当今 Web 应用高度交互化、复杂化的趋势下,JavaScript 作为核心脚本语言,其性能优劣直接决定了用户体验的好坏。从单页应用(SPA)的流畅运行,到复杂数据可视化的实时交互,JavaScript …

正点原子【第四期】Linux之驱动开发学习笔记-2.1LED灯驱动实验(直接操作寄存器)

前言: 本文是根据哔哩哔哩网站上“正点原子【第四期】手把手教你学Linux系列课程之 Linux驱动开发篇”视频的学习笔记,该课程配套开发板为正点原子alpha/mini Linux开发板。在这里会记录下正点原子 I.MX6ULL 开发板的配套视频教程所作的实验和学习笔记内…

【GM3568JHF】FPGA+ARM异构开发板 测试命令

本章节的命令操作均在板卡的终端执行 1 初探/sys目录 与/proc目录类似,/sys目录下的文件/文件夹向用户提供了一些关于设备、内核模块、文件系统以及其他内核组件的信息, 如子目录block中存放了所有的块设备;子目录bus中存放了系统中所有的总…

【Win】Motrix+Aria2浏览器下载加速

系统安装Motrix Motrix官网下载,推荐下载NSIS Installer 安装版 浏览器安装Aria2 下载Aria2插件,然后开发者模式安装到浏览器 Aria2扩展选项的配置如下: 端口号需要改成Motrix的,默认是16800

SpringBoot applicationContext.getBeansOfType获取某一接口所有实现类,应用于策略模式

本文介绍了如何在Springboot项目中通过ApplicationContext获取接口的实现类,并通过枚举策略模式避免if/else,展示了如何使用getBeansOfType获取TrafficModeService的实现,以及如何在实际场景中应用,如查询交通方式费用 1 在实际工…

大模型问题:幻觉分类+原因+各个训练阶段产生幻觉+幻觉的检测和评估基准

1. 什么是幻觉?大模型出现幻觉,简而言之就是“胡说八道”。 用《A Survey on Hallucination in Large Language Models》1文中的话来讲,是指模型生成的内容与现实世界事实或用户输入不一致的现象。 研究人员将大模型的幻觉分为事实性幻觉&…

智慧冷库物联网解决方案——实现降本增效与风险可控的冷库管理新范式

一、冷库管理痛点设备孤岛化:冷库品牌、型号分散,缺乏统一接入标准,数据互通难,依赖人工巡检,故障响应滞后。能耗黑洞:制冷系统能耗占冷库总运营成本的60%以上,传统管理粗放,缺乏动态…