ElasticSearch那些事儿(二)

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

目录

索引

文档

REST API

集群

节点

分片&&副本

文档的基本CURD和批量操作(update文档、index文档、get文档)

倒排索引和正排索引

常见字段类型


本小结主要讲解ElasticSearch的基本概念

索引

ES将数据存储于一个或多个索引中,索引是具有类似特性的文档的集合。类比传统的关系型数据库领域来说,索引相当于SQL中的一个数据库,或者一个数据存储方案(schema)。索引由其名称(必须为全小写字符)进行标识,并通过引用此名称完成文档的创建、搜索、更新及删除操作。一个ES集群中可以按需创建任意数目的索引。

文档

文档是Lucene索引和搜索的原子单位,它是包含了一个或多个域的容器,基于JSON格式进行表示。文档由一个或多个域(Field)组成,每个域拥有一个名字及一个或多个值,有多个值的域通常称为“多值域”。每个文档可以存储不同的域集,但同一类型下的文档至应该有某种程度上的相似之处。

  • ElasticSearch是面向文档的,文档是所有可搜索数据的最小单元,例如日志文件中的日志项,一部电影或者一张唱片的详细信息等
  • 文档会被序列化城JSON格式,保存在ElasticSearch中
  • 每个文档中都有一个Unique ID

REST API

为了对接不同的语言,ElasticSearch在设计之初都以REST API的方式进行展示,方便开发者进行对接。ElasticSearch的REST API主要包含文档的增删改查,Partial Update,Bulk Operation,搜索和聚合。

集群

集群是一个或多个节点(服务器)的集合,它们共同保存你的整个数据,并提供跨所有节点的联合索引和搜索功能。一个集群由一个唯一的名称标识,默认这个唯一标识的名称是"elasticsearch"。这个名称很重要,因为如果节点被设置为按其名称加入集群,那么节点只能是集群的一部分。

确保不要在不同的环境中用相同的集群名称,否则可能导致节点加入到错误的集群中。例如,你可以使用"logging-dev", "logging-test", "logging-prod"分别用于开发、测试和正式集群的名字。

节点

节点是一个单独的服务器,它是集群的一部分,存储数据,并参与集群的索引和搜索功能。就像集群一样,节点由一个名称来标识,默认情况下,该名称是在启动时分配给节点的随机通用唯一标识符(UUID)。如果不想用默认的节点名,可以定义任何想要的节点名。这个名称对于管理来说很重要,因为你希望识别网络中的哪些服务器对应于你的Elasticsearch集群中的哪些节点。

一个节点可以通过配置集群名称来加入到一个特定的集群中。默认情况下,每个节点都被设置加入到一个名字叫"elasticsearch"的集群中,这就意味着如果你启动了很多个节点,并且假设它们彼此可以互相发现,那么它们将自动形成并加入到一个名为"elasticsearch"的集群中。

一个集群可以有任意数量的节点。此外,如果在你的网络上当前没有运行任何节点,那么此时启动一个节点将默认形成一个单节点的名字叫"elasticsearch"的集群。

分片&&副本

一个索引可能存储大量数据,这些数据可以超过单个节点的硬件限制。例如,一个包含10亿条文档占用1TB磁盘空间的索引可能不适合在单个节点上,或者可能太慢而不能单独处理来自单个节点的搜索请求。

为了解决这个问题,Elasticsearch提供了将你的索引细分为多个碎片(或者叫分片)的能力。在创建索引时,可以简单地定义所需的分片数量。每个分片本身就是一个功能完全独立的“索引”,可以驻留在集群中的任何节点上。

分片之所以重要,主要有两个原因:

  • 它允许你水平地分割/扩展内容卷
  • 它允许你跨分片(可能在多个节点上)分布和并行操作,从而提高性能和吞吐量

在一个网络/云环境中随时都有可能出现故障,强烈推荐你有一个容灾机制。Elasticsearch允许你将一个或者多个索引分片复制到其它地方,这被称之为副本。

复制之所以重要,有两个主要原因:

  • 它提供了在一个shard/node失败是的高可用性。出于这个原因,很重要的一个点是一个副本从来不会被分配到与它复制的原始分片相同节点上。也就是说,副本是放到另外的节点上的。
  • 它允许扩展搜索量/吞吐量,因为搜索可以在所有副本上并行执行。

总而言之,每个索引都可以分割成多个分片。索引也可以被复制零(意味着没有副本)或更多次。一旦被复制,每个索引都将具有主分片(被复制的原始分片)和副本分片(主分片的副本)。在创建索引时,可以为每个索引定义分片和副本的数量。创建索引后,您可以随时动态地更改副本的数量,但不能更改事后分片的数量。

在默认情况下,Elasticsearch中的每个索引都分配了5个主分片和1个副本,这意味着如果集群中至少有两个节点,那么索引将有5个主分片和另外5个副本分片(PS:这5个副本分片组成1个完整副本),每个索引总共有10个分片。

文档的基本CURD和批量操作(update文档、index文档、get文档)

1. Create一个文档

  • 支持自动生成文档Id和指定文档Id两种方式
  • 通过PUT /users/_doc,系统会自动生成document Id
  • 使用HTTP PUT user/_create/1创建时,URI中显示指定_create,此时如果该文档id已经存在,则提示操作失败
#create document,自动生成_id
POST users/_doc
{
  "user" : "Mike",
  "post_date" : "2020-07-11 23:25:40",
  "message" : "I'm trying out Kinbana"
}

#create document,指定Id,如果Id已经存在,报错
POST users/_doc/1?op_type=create
{
  "user" : "Jack",
  "post_date" : "2020-07-11 23:38:40",
  "message" : "I'm trying out Kinbana"
}

#create document,指定Id,如果Id已经存在,则会进行更新操作
POST users/_doc/2
{
  "user" : "Merry",
  "post_date" : "2020-07-11 23:39:40",
  "message" : "I'm trying out Kinbana"
}

2. 查看一个索引

#查看users索引相关信息
GET users

#查看文档总数
POST users/_count


#查看索引文档总数
GET users/_count

倒排索引和正排索引

1. 正排索引(前向索引)

正排索引也称为"前向索引"。它是创建倒排索引的基础,具有以下字段。

(1)LocalId字段(表中简称"Lid"):表示一个文档的局部编号。

(2)WordId字段:表示文档分词后的编号,也可称为"索引词编号"。

(3)NHits字段:表示某个索引词在文档中出现的次数。

(4)HitList变长字段:表示某个索引词在文档中出现的位置,即相对于正文的偏移量。

由于一篇文章中的某些词可能出现多次,而且位置不同,而全文检索的本质要求是把这些位置标识出来,因此HitList中的每个命中都表示索引词在文档的某个位置中出现了一次,这个序列为单调递增序列。基于游程编码的方法,变升序序列为差分序列,采用前文提到的 Variable Byte Coding 方法编码可以大大压缩正排索引的HitList字段。

在正排索引中 LocalId 采用升序序列编号(假定编号采用自增1的方式递增),这为下面的计算创造条件。进行倒排索引的转化时,由于正排索引中 Lid 天然的有序性,因此在正排索引转化为倒排索引的创建过程中,自然可以保证倒排索引中每个词汇对应的文档编号也是有序的。

2. 倒排索引

倒排索引是一种以关键字和文档编号结合,并以关键字作为主键的索引结构。倒排索引分为两个部分。

(1)第1个部分:由不同索引词(index term)组成的索引表,称为"词典"(lexicon)。其中保存了各种中文词汇,以及这些词汇的一些统计信息(例如出现频率nDocs),这些统计信息用于各种排名算法(Ranking Algorithm)[Salton 1989;Witten 1994]

(2)第2个部分:由每个索引词出现过的文档集合,以及命中位置等信息构成,也称为"记录表"(posting file)或"记录列表"(posting list)

常见字段类型

ES常用的数据类型可分为3大类,核⼼数据类型、复杂数据类型和专⽤数据类型。

  • 核心数据类型

字符串

数值型

日期类型

范围型

布尔

⼆进制

  • 复杂数据类型

对象

数组

  • 专用数据类型

ip

【Elasticsearch】7.9 单字段支持的最大字符数 1.概述 1.1 官网 官网:https://www.elastic.co/guide/en/elasticsearch/reference/current/ignore-above.html#ignore-above ignore_above 长于ignore_above设置的字符串将不会被索引或存储。对于字符串数组,ignore_above将分别应用于每个数组元素,且字符串元素的长度大于ignore_above将不会被索引或存储的字符串元素。 _source如果启用了这是Elasticsearch中. 阅读详情

相关推荐

【Elasticsearch】十九种Elasticsearch字符串搜索方式终极介绍 各种 查询

1.概述 转载:十九种Elasticsearch字符串搜索方式终极介绍 建议直接看原文 转载原因:各种查询方式都有,比较有个清晰的概念,也可以当做字典来用。 ES 的 query 简单分成 4 类: term query,对单个词的 query,包括 term/terms/range/exists/missing/ids/regexp 等 full text query ,全文检索query,对多个词(即句子)的query,包括 match/multi_match/common 等 compound q.

九师兄 1761

ElasticSearch设置索引最大字段数,字段最大数据长度

错误:index has exceeded [1000000] - maximum allowed to be analyzed for highlighting. es单独一个字段有大小限制 -----修改最大返回数据大小 curl -XPUT “http://ip:9200/_settings” -H ‘Content-Type: application/json’ -d’ {“index” : {“highlight.max_analyzed_offset” : 100000000}}’ 错误:Lim

lxy的博客 4350

ES7~ES13那些事儿

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

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

es查询某个字段长度大于多少

{ "query": { "bool": { "filter": { "regexp": { "content": { "value": ".{1000,}" } } } } } }

fangletian1981的专栏 1万+

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

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

AI天才研究院 879

安卓直链APK安装拦截全解析:从Play Protect到厂商管控的应对指南

在移动应用分发领域,APK(Android Package)安装是开发者与用户交互的关键环节。其核心原理涉及安卓系统的安全沙箱机制与权限管理体系,旨在保护用户设备免受恶意软件侵害。这一机制的技术价值在于平衡了应用生态的开放性与安全性,但也在应用推广、企业内部分发等场景中带来了挑战。尤其在通过官网、广告等直链渠道分发APK时,常会遇到安装转化率骤降的问题。这背后主要受到Google Play Protect云端扫描、安卓系统安装权限模型演进(如Android 8.0+的安装源授权)以及设备制造商附加安全层(如

weixin_33894640的博客 470

ElasticSearch(四):查询

介绍ES的基本查询操作,以及过滤查询、聚合查询。

qq_33506353的博客 1168

利用LATX技术在龙芯安同AOCS OS上部署坚果云:跨架构文件同步实战

本文详细介绍了如何在龙芯安同AOCS OS上,利用LATX指令翻译技术部署坚果云客户端,实现跨架构文件同步。通过安装LATX环境、解压x64安装包、运行安装脚本三步,成功在loongarch64架构上运行仅支持x86_64的软件,解决了国产平台办公协同的痛点,并分享了性能实测与优化建议。

weixin_29305337的博客 458

ES5和ES6那些你必须知道的事儿(二)

ES5和ES6那些你必须知道的事儿 ES5新增的东西 二、对象方法   1、Object.getPrototypeOf(object)     返回对象的原型 function Pasta(grain, width) { this.grain = grain; this.width = width; } var spaghetti = new P...

denggen20020210的博客 168

点云配准实战:用DGCNN+Transformer+SVD搞定3D模型对齐(附PyTorch代码)

本文详细介绍了基于深度学习的点云配准实战方法,重点解析了Deep Closest Point (DCP)模型。该模型融合了DGCNN、Transformer和可微分SVD三大核心模块,能够端到端地预测点云间的刚性变换,有效克服传统ICP算法对初始位置敏感、易陷入局部最优的缺点。文章提供了完整的PyTorch代码实现、ModelNet40数据集处理、训练策略及显存优化技巧,旨在帮助开发者在机器人、自动驾驶等领域实现精准的3D模型对齐。

weixin_29061041的博客 155

AUTOSAR内存篇 -内存驱动(Mem)

Mem驱动程序的task是基于底层内存设备技术的物理分段的低级内存访问。Mem驱动程序的API与内存设备技术无关,因此向存储器访问模块上层提供了与存储器设备无关的接口。所有高级功能(如跨段操作)都由内存访问模块处理,以尽可能降低Mem驱动器的复杂性和占用空间。Mem驱动API命名、类型定义和文件命名规则都遵循标准的AUTUSAR BSW模块实现。服务Mem_Init初始化Mem驱动的内部状态,并设置Mem驱动Job处理状态到MEM_JOB_OK。

IOT2017的博客 715

【es6学习】let与const的那些事儿(二)

3 canst 命令 3.1 基本用法 const 声明 一个只读的常量。一 旦声明,常量的值就不能改变。 const PI = 3.1415 ; PI // 3.1415 PI = 3; // TypeError: Assignment to constant variable. 上面的代码表明改变常量的值会报错。 const 声明的常量不得改变值。这意味着, const 一旦声明常量,就必须立即初始化,不能留到以后赋值。 const foo; // SyntaxError : Missing

weixin_41884808的博客 216

QMK固件OLED显示屏配置教程:从零开始实现个性化键盘显示(实操部分)

本教程详细介绍了如何从零开始配置QMK固件的OLED显示屏,实现个性化键盘显示。首先,文章解释了OLED显示屏的基本概念及其在键盘中的应用,并介绍了I2C和SPI两种通信方式。接着,教程逐步指导用户如何在QMK固件中启用OLED功能,包括在rules.mk中启用OLED、在halconf.h和mcuconf.h中配置I2C功能,以及在config.h中设置I2C和OLED参数。最后,教程展示了如何在keymap.c中编写代码,实现OLED显示内容,并提供了进阶定制功能,如显示当前层信息、按键状态和QMK L

Despacito0o的博客 583

[转]基于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

【ChangeCLIP】Remote sensing change detection with multimodal vision-language representation learning

ChangeCLIP论文及代码使用详解。持续更新变化检测最新论文,欢迎订阅本专栏。

向上生长的程序媛的博客 1339

华为OD机试真题 新系统2026-04-01 C++ 实现【计算数列位置N的值】

如果其前面的M个元素中,存在值相同的元素,则该位置上的数值等于前面M个数中最大的数值与最小的数值之如果其前面的M个元素中,不存在值相同的元素,则该位置上的数值等于前面M个数中最大的数值与最小的数值之差;1、输入M、N两个数,则按照以下规则形成一个数列;两个整数,用逗号分割,分别表示M和N。一个整数,表示数列第N个位置上的数值。2、数列的前M个元素的值为1到M;请计算该数列第N个位置上的数值。N取值范围:1<= N<=50。M取值范围:3<=M<=10。

MISAYAONE的博客 1160

Elasticsearch内存那些事儿

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

东境物语 2735

【车载以太网测试从入门到精通】系列文章目录汇总

物理层测试、数据链路层测试、以太网交换机测试、网络层测试、传输层测试、以太网TCP/IP协议自动化测试、以太网网络管理测试、以太网网络管理自动化测试、鲁棒性测试、SOME/IP测试、SOMEI/IP服务接口自动化测试、DoIP诊断测试、DoIP诊断自动化测试、DoIP BootLoader刷写、以太网网关路由测试、以太网网关路由自动化测试、AVB测试。

测试领域技术分享 3164

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

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

qq_41864967的博客 1622

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

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

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

等风来 8156

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

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

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

追风人的博客 1219

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

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

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值