ElasticSearch那些事儿(七)

MySQL数据以全量和增量方式,同步到ES搜索引擎 知识的广度来自知识的深度,学习如果不成体系那是多可怕的一件事儿,希望我们在未来的学习道路上坚守初心,不要给自己留下遗憾,以自己喜欢的方式生活,做自己喜欢做的事,宠爱自己,做一个独一无二的自己! 对于文章中出现的任何错误请大家批评指出,会及时做出修改! 有任何想要讨论和学习的问题可联系我:cittaksana@qq.com MySQL数据以全量和增量方式,同步到ES搜索引擎一、配置详解1、下载内容2、核心配置3、启动进程二、ES客户端工具 一、配置详解 场景描述:MySQL数据表以全量和增量的方式向E. 阅读详情

映射

Mapping用于描述数据的每个字段如何存储。ES自动生成一个_all字段,其类型为字符串,属于全文字段。ES会根据文档内容进行猜测,动态产生一个映射。

简单类型

Elasticsearch 支持 如下简单域类型:

  1. 字符串:string
  2. 整数:byte, short, integer, long
  3. 浮点数:float, double
  4. 布尔型:boolean
  5. 日期:date

当你索引一个包含新字段的文档时,ES自动进行动态映射。JSON类型到上述类型的转换比较直白,除了要注意2018-04-03这样的字符串会被自动解析为date类型。

复杂类型

除了上述的简单标量类型外,JSON中的null、数组、对象,都是被ES支持的。

空字段不会被索引,包括:null、null、[ null ]

Lucene不理解嵌套对象,Lucene文档由一组键值对的列表构成。为了支持复杂类型的处理,ES必须对文档进行扁平化。

多值域以数组形式表示,数组的元素类型必须相同。尽管提取文档时,数组元素顺序不会丢失,但是索引是以无序的多值域形式进行的:

Shell

1

2

3

4

5

6

7

8

9

10

11

12

13

14

{

    "followers": [

        { "age": 35, "name": "Mary White"},

        { "age": 26, "name": "Alex Jones"},

        { "age": 19, "name": "Lisa Smith"}

    ]

}

# 被扁平化为

{

    # 扁平化后,age和name之间的关系丢失

    # 如果要查询是否有名为alex的26岁的follower,需要使用嵌套对象

    "followers.age":    [19, 26, 35],

    "followers.name":   [alex, jones, lisa, smith, mary, white]

}

类似的,为了让ES有效的索引嵌套对象,同样需要扁平化:

Shell

1

2

3

4

5

{

    "tweet":            [elasticsearch, flexible, very],

    "user.id":          [@johnsmith],

    "user.gender":      [male]

}?

分析

Analysis是处理全文字段,使其可以被搜索的过程。分析包含下面的步骤:

  1. 首先,将一块文本分成适合于倒排索引的独立的词条
  2. 之后,将这些词条统一化为标准格式以提高它们的“可搜索性”

分析器

分析器负责执行上面的工作。 分析器实际上是将三个功能封装到了一个包里:

  1. 字符过滤器:首先,字符串按顺序通过每个字符过滤器 。他们的任务是在分词前整理字符串。一个字符过滤器可以用来去掉HTML,或者将 & 转化成and
  2. 分词器:其次,字符串被分词器分为单个的词条。一个简单的分词器遇到空格和标点的时候,可能会将文本拆分成词条
  3. Token过滤器:最后,词条按顺序通过每个Token过滤器 。这个过程可能会:
    1. 改变词条,例如小写化?
    2. 删除词条,例如像 a, and, the这样的无用词
    3. 增加词条,例如像像 jump 和 leap 这种同义词

ES提供了开箱即用的字符过滤器、分词器、Token过滤器,它们可以自由的组合成分析器,满足不同应用场景。

内置分析器

分析器说明
标准分析器默认的分析器,根据Unicode联盟定义的单词边界来话分文本,删除绝大部分标点符号,最后小写化
简单分析器在任何非字母的地方拆分词条
空格分析器以空格为界拆分词条
语言分析器

针对特定语言,例如:

  1. 英语分析器附带了一组英语无用词,并且理解英语语法规则,能够提取词干

分析器何时生效

  1. 当索引一个文档时,它的全文域被分析成词条以用来创建倒排索引
  2. 当在全文字段上执行搜索时,查询字符串也需要类似的分析过程

当查询一个精确值字段时,分析器不会介入。

指定分析器

当ES在你的文档中检测到一个新的字符串域 ,它会自动设置其为一个全文字符串域,使用标准分析器对它进行分析。某些情况下你可能需要改变此默认行为:

  1. 你想使用一个不同的分析器,适用于你的数据使用的语言
  2. 你想要一个字符串域就是一个精确值,不需要分析

可以通过自定义映射来满足上述需求。

字段类型

总体来说,ES中的字段可以分为精确值、全文两个大类。

精确值包括日期、数字,字符串也可以表示精确值。精确值是大小写敏感的。精确值很容易查询,它要么匹配,要么不匹配查询条件。

查询全文字段则要复杂的多,通常不会对全文字段进行精确匹配查询。全文字段匹配查询条件时有个相关度的概念,表现为分数(Scoure)。搜索引擎应该能够识别缩写、词根、同义词,并给出适当的相关度。

对全文检索的支持依赖于分析,在分析之后需要创建倒排索引。

倒排索引

ES使用一种称为倒排索引的结构来支持快速的全文检索。

倒排索引的结构类似于RDBMS的位图索引,对于索引中出现的任何不重复的词的标准模式,生成包含该此的文档列表。标准模式提取了词干、同义词。

相关性

默认情况下,查询返回结果是按相关性倒序排列的。每个文档都有相关性评分,用一个正浮点数字段 _score 来表示 。 _score 的评分越高,相关性越高。

查询语句会为每个文档生成一个 _score 字段。评分的计算方式取决于查询类型。不同的查询语句用于不同的目的:fuzzy 查询会计算与关键词的拼写相似程度。terms 查询会计算找到的内容与关键词组成部分匹配的百分比。

通常我们说的 relevance 是我们用来计算全文本字段的值相对于全文本检索词相似程度的算法。ES的相似度算法被定义为检索词频率/反向文档频率, 包括以下内容:

  1. 检索词频率:检索词在该字段出现的频率?出现频率越高,相关性也越高
  2. 反向文档频率:每个检索词在索引中出现的频率?频率越高,相关性越低
  3. 字段长度准则:字段本身的长度是多少?长度越长,相关性越低
从Elasticsearch到Milvus:深入聊聊BM25在主流搜索引擎与向量数据库里的那些事儿 本文深入解析BM25算法在Elasticsearch和Milvus中的实现差异与优化策略,探讨传统搜索引擎与向量数据库的混合搜索架构设计。通过参数调优和实战案例,展示BM25在电商搜索和金融风控等场景中的性能提升效果,为技术选型提供实用指南。 阅读详情

相关推荐

Elasticsearch分布式搜索引擎的那些事儿

作者:禅与计算机程序设计艺术 1.背景介绍 Elasticsearch是一个基于Lucene的开源搜索服务器,它提供了一个分布式多用户能力的全文搜索引擎,它的目的是为了解决目前已知的所有信息检索问题,尤其是实时数据处理、日志分析等应用领域。本文将以Elasticsearch为主要分析对象,来谈谈El

AI天才研究院 879

初识C语言【一】(数据类型、变量、常量、作用域、字符串、转义字符、注释)

初识c语言的一些基础知识。

Like11ey的博客 401

ES7~ES13那些事儿

ES7~ES12都可以统称为ES6+,ES6等价于ES2015,ES6是一个非常大的版本更迭,但是后面ES7、ES8等等增加的知识并不是很多,但是肯定也是有用的,存在即合理。所以这篇就总结一下ES6之后增加的一些常用的主要的知识

专注于技术,分享实战经验,探索技术边界,用代码构建更美的数字世界。 1494

重生之我们在ES顶端相遇第6 章- Dynamic Mapping(动态映射)

在第5章,我们说完 ES 常用字段类型。但是,并未跟大家解释,为什么不设置 Mapping,写入的字符串,默认就可以全文搜索。例如"query": {"name": {这一切都跟 ES 的功能有关。下面我将介绍这一功能。dynamic mapping 默认是开启的。ES 有以下 4 个可选值• true: 往文档写入新字段时,会自动创建字段类型(默认值)• runtime: 往文档写入新字段时,会自动创建字段类型, 与 true 的区别为,2者字段映射不一样。

不能放弃治疗 782

在Windows 11上用VirtualBox搞定WRF-Hydro 5.2.0:一个水文模型小白的Ubuntu 22.04虚拟机避坑实录

本文详细记录了在Windows 11上使用VirtualBox和Ubuntu 22.04虚拟机成功编译安装WRF-Hydro 5.2.0水文模型的全过程。从虚拟环境配置、依赖库安装到环境变量设置,作者分享了针对Linux新手的实用避坑技巧和关键命令,帮助科研人员高效完成水文模型的环境搭建。

weixin_30733003的博客 354

告别玄学:手把手配置EtherCAT从站PDI接口与同步采样(含Sync/Latch信号实战)

本文详细解析了EtherCAT从站PDI接口配置与同步采样技术,涵盖微处理器通信与直接驱动IO模式选择、同步采样四大触发模式(SOF、Latch_in、Sync0/Sync1)及输出触发实战。通过伺服驱动器实例,帮助工程师突破配置难点,实现高精度同步控制,提升工业自动化系统性能。

weixin_30667649的博客 484

使用阿里云试用Elasticsearch学习:1.4 基础入门——映射和分析

尽管在很多情况下基本域数据类型已经够用,但你经常需要为单独域自定义映射,特别是字符串域。全文字符串域和精确值字符串域的区别使用特定语言分析器优化域以适应部分匹配指定自定义数据格式还有更多域最重要的属性是 type。默认, string 类型域会被认为包含全文。就是说,它们的值在索引前,会通过一个分析器,针对于这个域的查询在搜索前也会经过一个分析器。string 域映射的两个最重要属性是 index 和 analyzer。

weixin_49131823的博客 1460

DASH 流媒体协议(Dynamic Adaptive Streaming over HTTP)概述——起源、MPD文件解析、相关项目

简单介绍DASH的起源与发展、MPD文件简要解析、相关项目,以及常见流媒体协议的比较

farewellyi的博客 6893

ES7基础篇-05-动态映射操作

再看看我们映射的3个日期类型,咦?只有my_date_3映射了日期类型,其他两个都是映射成了text类型,这是由于我们在设置dynamic_date_formats时,只指定了一种格式。我们只需要把其他两种类型的日期格式也加上就可以了。而动态映射是ES中一个非常重要的概念,你可以直接向文档中导入一条数据,与此同时,索引、字段、字段类型都会自动创建,无需你做其他的操作。这就是动态映射的神奇之处。通常情况下,我们使用ES建立索引的步骤是,先创建索引,然后定义索引中的字段以及映射的类型,然后再向索引中导入数据。

Alan0517 958

PCA9548实战:从硬件连接到Linux驱动的I2C扩展全解析

本文详细解析了PCA9548 I2C多路复用器从硬件连接到Linux驱动配置的全过程。涵盖硬件引脚连接、电源去耦、地址选择等关键设计要点,以及Linux驱动加载、设备树配置和应用层编程技巧,帮助开发者高效实现I2C总线扩展。

weixin_28726391的博客 413

ARM CMSIS DAP源码分析(二)

今天分析的是RDDI_DAP_GetARMRegs(DWORD *regs, DWORD *rfpu, ULONG64 mask)和RDDI_DAP_SetARMRegs(DWORD *regs, DWORD *rfpu, ULONG64 mask)这两个函数。 以RDDI_DAP_GetARMRegs(DWORD *regs, DWORD *rfpu, ULONG64 mask)为例,代码如下:

pengxiao618的专栏 7977

c语言字符串域宽,C语言 输出

输出fputs用fputs()把一个字符串写入到文件中int fputs (char string, FILE fp) ;功能:把字符串string写入到文件fp中若fp为stdout,则为向屏幕输出。printfint printf ( char const format, …… ) ;int fprintf ( FILE fp, char const format, …… ) ;int ...

weixin_29000891的博客 2371

[PCIE5.0] 4.2.3.2 Encoding of Presets

• 发射器预设:发射器预设值用4位二进制编码,表示不同的预设设置(P0 到 P10),这些设置定义了信号的传输特性。• 接收器预设提示:接收器预设提示是通过3位二进制编码告诉接收器建议的增益值,用于调整接收器的灵敏度(适用于8.0 GT/s数据速率)。

系统固件工程师 575

[转]基于Elasticsearch分布式搜索引擎的架构原理

[转]基于Elasticsearch分布式搜索引擎的架构原理 http://www.mobabel.net/%E8%BD%AC%E5%9F%BA%E4%BA%8Eelasticsearch%E5%88%86%E5%B8%83%E5%BC%8F%E6%90%9C%E7%B4%A2%E5%BC%95%E6%93%8E%E7%9A%84%E6%9E%B6%E6%9E%84%E5%8E%9F%E7%90...

yb223731的博客 1014

【工具插件类教学】Unity翻书效果插件Book-Page Curl Pro教程

特征: • 从左到右和从右到左翻页 • 与画布缩放器 配合使用 • 可配置的自动翻转脚本 • 支持向页面 添加 UI 元素 • 支持透明页面 • 适用于“世界空间”画布

纯技术流日常开发商业开发记录总结等 3677

【OpenClaw从入门到精通】第15篇:国产芯片适配实战——昇腾/龙芯/天数智芯全流程跑通(2026实测版)

2026年国产芯片AI适配迎来爆发期,OpenClaw作为轻量化本地AI智能体,已实现华为昇腾、龙芯、天数智芯等主流国产平台的全流程适配。本文基于实测数据,从背景解析、核心原理、算法优化、实操部署四个维度,详细讲解OpenClaw在香橙派昇腾开发板、龙芯3B6000M、天数彤央TY1200及联想开天X7h的部署流程,同时提供统一工具玄武CLI的使用指南。文中包含完整代码、执行结果、避坑技巧及虚拟实战案例,兼顾新手入门与进阶提升,帮助读者快速掌握国产芯片上的本地AI部署能力,实现数据隐私保护与低成本AI落地。

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 1012

Elasticsearch内存那些事儿

Elasticsearch内存分配设置详解。 前言 「该给 ES 分配多少内存?」 「为什么是给 ES 分配服务器的一半内存?」 「为什么内存使用率不断升高,没有释放?」 「为何经常有某个 field 的数据量超出内存限制的异常?」 「为何感觉上没多少数据,也会经常 Out Of Memory?」 相信每个ES使用者或者运维人员都遇到过这些问题,也踩过不少坑。 这里根据我个人的学习和日...

东境物语 2735

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

ElasticSearch四:ES分布式怎么进行部署

es生产集群的部署架构是什么?每个索引的数据量大概有多少?每个索引大概有多少个分片? 这个问题,包括后面的redis什么的,谈到es、redis、mysql分库分表等等技术,面试必问!就是你生产环境咋部署的?说白了,这个问题没啥技术含量,就是看你有没有在真正的生产环境里干过这事儿! 有些同学可能是没在生产环境中干过的,没实际去拿线上机器部署过es集群,也没实际玩儿过,也没往es集群里面导...

qq_41864967的博客 1622

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

打比赛?《CTF那些事儿》你不能错过。

现如今,网络安全赛道不可谓不红火随着知识的指数式增长及政策扶持,安全行业也迎来了春天但随着这一领域的准入门槛逐渐降低,竞争愈发激烈我们更加呼吁专业化的就职人员与技能素质优秀的大学生而作为快速提升网安技能的重要途径、各个行业选拔网安人才的通用方法CTF比赛无疑提供了最优的解决办法。于是,《CTF那些事儿》应运而生,读懂它、读会它、读好它,零基础学安全,月薪10k不是梦!【文末免费送书!!!

等风来 8156

贝叶斯统计 [韦来生编]

贝叶斯(Bayes)统计是近几十年来迅速发展起来的数理统计的一个重要分支。贝叶斯方法与经典统计方法的主要不同之处是进行统计推断时除了利用样本信息外,还要利用参数的先验信息,因此可以提高统计推断或统计决策的效果。它在经济、金融、生物、医学、自然科学和社会科学等许多领域具有广泛的应用。贝叶斯方法的研究已渗透到了统计学的几乎所有领域。作者在给中国科学技术大学概率论与数理统计专业本科生开设的“数理统计”课程中有一章专门讲授“贝叶斯方法和统计决策理论”,近十年来也给中国科学技术大学概率统计专业研究生开设过几次“贝叶斯分析”课。本书是在对过去讲稿的内容作了适当的增减和调整的基础上完成的。  本书共分六章。第1章是绪论,介绍了贝叶斯统计的若干基本概念,同时对必要的数理统计的基础知识有重点地作了回顾。第二章介绍了确定先验分布的若干可供选择的方法。第三章介绍了几类常见统计模型参数的后验分布的主要结果和计算方法。第四章和第五章分别介绍了“贝叶斯统计推断”和“贝叶斯统计决策”的内容。第六章介绍了贝叶斯统计计算的若干方法,包括蒙特卡洛方法和马尔可夫链蒙特卡洛(MCMC)方法以及相关统计软件的简介。本书的每一章附右大量的例题和习题,书末附有常用的几个表格和部分习题解答供读者查用。  大约可在54学时内讲授本书的第1章至第六章的主要内容,教师可根据学时需要选讲本书第1章至第六章的部分内容。书中标“*”号的章节可略去不讲,留给读者作为阅读材料。第六章例题中的R代码和部分例题的数据文件等可从作者个人主页下载。  作者在编写本书的过程中参考了J.O.Berger教授的《统计决策论及贝叶斯分析》和茆诗松教授编写的《贝叶斯统计》等书中的一些内容,以及《贝叶斯分析》一书中由张伟平博士编写的有关贝叶斯统计计算的一些内容。在此表示衷心感谢。  本书编写准备过程中,中国科学技术大学统计与金融系的几个研究生帮助完成了本书部分中文的录入和排版,作者对他们的辛勤工作表示真诚的感谢。高等教育出版社为本书的出版给予了大力支持。在此一并致谢。

Elasticsearch(ES)分词器的那些事儿

1. 概述 分词器是Elasticsearch中很重要的一个组件,用来将一段文本分析成一个一个的词,Elasticsearch再根据这些词去做倒排索引。 今天我们就来聊聊分词器的相关知识。 2. 内置分词器 2.1 概述 Elasticsearch 中内置了一些分词器,这些分词器只能对英文进行分词处理,无法将中文的词识别出来。 2.2 内置分词器介绍 standard:标准分词器,是Elasticsearch中默认的分词器,可以拆分英文单词,大写字母统一转换成小写。 simple:按

追风人的博客 1219

ElasticSearch一:分布式搜索引擎的架构

es的分布式架构原理?es是如何实现分布式的啊)? 在搜索这块,lucene是最流行的搜索库。几年前业内一般都问,你了解lucene吗?你知道倒排索引的原理吗?现在早已经out了,因为现在很多项目都是直接用基于lucene的分布式搜索引擎——elasticsearch,简称为es。 而现在分布式搜索基本已经成为大部分互联网行业的java系统的标配,其中尤为流行的就是es,前几年es没火的...

qq_41864967的博客 587

拆解 “ES 已死“ 伪命题:Agentic RAG 时代搜索引擎的终极形态

综上所述,无论是传统 RAG 场景,还是代表未来趋势的 Agentic RAG 场景,Elasticsearch 凭借其丰富的功能、强大的处理能力以及完整的闭环体系,都将是技术选型时不容忽视的择优选项。那些宣扬 “ES已死” 的言论,纯粹就是瞎扯。其实开源社区真没必要天天想着怎么攻击别人,也别总想着用一些歪门邪道去误导用户。真想让这个行业进步,应该是一起把蛋糕做大,让更多的使用场景从传统的文本检索上进行迁移。

Elastic 中国社区官方博客 1992

【ElasticSearch系列连载】7. 关于ES数据读写那点事儿

如果数据本身有自己的唯一标记,那么在建立索引时可以使用id来指定文档的id。如下,使用curl在your_index索引下写入一个id=1001的文档。{"field": "内容"}'返回如下{}可以看到除了index, type和id字段,还有一个version字段。在ES中每个文档都有一个自己的version编号,每当文档发生变化时,version就会增长。...

josiah_zhao的博客 1002

ElasticSearch那些事儿(二)

索引 文档 REST API 集群 节点 分片

Computer_hello的博客 1607
上一篇: ElasticSearch那些事儿(六)
下一篇: ElasticSearch那些事儿(八)
Computer_hello
博客等级 码龄10年 2粉丝 36原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值