ES初探!
前言在上手使用前需要先了解一些基本的概念。推荐可以到 https://www.elastic.co/guide/cn/elasticsearch/guide/current/index.html 阅读《Elastic Search 权威指南》有非常详细和全面的说明。ES中的一些概念index索引相当于mysql中的数据库type类型相当于mysql中的一张表document文档相当于mysql中的一行一条记录field域相当于mysql中的一列一个字段节点一个服务器由一个名字来标识集群一个或多个节点组织在一起分片将一份数据划分为多小份的能力允许水平分割和扩展容量。多个分片可以响应请求提高性能和吞吐量。副本复制数据一个节点出问题时其余节点可以顶上。倒排索引可参考https://www.elastic.co/guide/cn/elasticsearch/guide/current/inverted-index.html。索引类型对索引的基本操作创建索引通过以下命令可创建一个索引PUT job { settings:{ index:{ number_of_shards:5, number_of_replicas:1 } } }返回{ acknowledged: true, shards_acknowledged: true }Elasticsearch 是利用分片将数据分发到集群内各处的。分片是数据的容器文档保存在分片内分片又被分配到集群内的各个节点里。当你的集群规模扩大或者缩小时 Elasticsearch 会自动的在各节点中迁移分片使得数据仍然均匀分布在集群里。一个分片可以是 主 分片或者 副本 分片。 索引内任意一个文档都归属于一个主分片所以主分片的数目决定着索引能够保存的最大数据量。一个副本分片只是一个主分片的拷贝。 副本分片作为硬件故障时保护数据不丢失的冗余备份并为搜索和返回文档等读操作提供服务。在上面例子中主分片为5副本分片为1.查看索引的信息GET job查看job这个索引的信息{ job: { aliases: {}, mappings: {}, settings: { index: { creation_date: 1502342603160, number_of_shards: 5, number_of_replicas: 1, uuid: LGalsb3eRKeGb5SbWCxO8w, version: { created: 5010199 }, provided_name: job } } } }可以只查看某一项信息GET job/_settings可以查看job这个索引的settings信息{ job: { settings: { index: { creation_date: 1502342603160, number_of_shards: 5, number_of_replicas: 1, uuid: LGalsb3eRKeGb5SbWCxO8w, version: { created: 5010199 }, provided_name: job } } } }修改索引信息例如将副本分片数量修改为2PUT job/_settings { number_of_replicas:2 }映射在创建索引时我们可以预先设定映射规定好各个字段及其数据类型便于es更好地进行管理。比如说以文章库为例 一篇文章的关键词字段应当作为完整的词语而文章的正文字段必须通过中文分词器进行分词。通过设置映射mapping可以告知es这些字段的规则。更详细文档参见https://www.elastic.co/guide/cn/elasticsearch/guide/current/mapping-intro.html数据类型Elasticsearch支持如下类型字符串: text, keyword注5之前的版本里有string类型5之后不再支持此类型数字: byte, short, integer, long, float, double布尔型:boolean日期: date复杂类型如object, nested等查看映射输入GET job/_mapping可以查看job索引下的所有映射。默认映射在创建索引存入数据时如果不指定类型es会自动根据实际数据为其添加类型。例如通过下面的语句插入文档PUT job/type1/1 { title:abc, words:123, date:2017-01-01, isok:true }然后查看映射结果为{ job: { mappings: { type1: { properties: { date: { type: date }, isok: { type: boolean }, title: { type: text, fields: { keyword: { type: keyword, ignore_above: 256 } } }, words: { type: long } } } } } }可见es自动根据类型对字段进行了映射。设置映射在创建索引时可以设置映射规则具体格式形如上面查看映射时的返回结果。PUT job { mappings:{ type2:{ properties:{ title:{ type:keyword }, salary:{ type:integer }, desc:{ type:text, analyzer: ik_max_word }, date:{ type:date, format:yyyy-MM-dd } } } } }注意在上面为desc字段指定了analyzer就是一个自定义分词器。在es-rtf中默认给安装了ik_smart和ik_max_word两个分词器区别在于后者会分出更多的词。为text类型的字段会被进行分词然后索引而keyword字段不会被分词。自动转换创建索引和映射后插入文档时字段会自动转换成映射中规定的类型。比如插入123到integer字段会自动尝试对字符串进行类型转换。如果无法转换则会报错无法插入。文档一个“文档”即所谓的一条记录。可对文档进行增删改操作。插入文档可以指定文档id即 PUT index_name/type_name/id。PUT job/type2/1 { title:Python工程师, salary:1000, desc:1. 参与devops相关系统开发包括云资源管理平台cmdb平台、资源申请流程、基础支撑平台开发2. 参与公司业务系统及自动化运维平台的开发3. 积累并规范化系统开发的最佳实践并文档化4. 完善并遵守团队的编码规范编写高质量、结构清晰、易读、易维护的代码。, date:2017-08-08 }返回{_index: job,_type: type2,_id: 1,_version: 1,result: created,_shards: {total: 2,successful: 1,failed: 0},created: true}也可不指定id则会自动分配id。注意这里要使用POST方式。POST job/type2/ { title:Python工程师2, salary:1000, desc:1. 参与devops相关系统开发包括云资源管理平台cmdb平台、资源申请流程、基础支撑平台开发2. 参与公司业务系统及自动化运维平台的开发3. 积累并规范化系统开发的最佳实践并文档化4. 完善并遵守团队的编码规范编写高质量、结构清晰、易读、易维护的代码。, date:2017-08-08 }查看文档只需通过GET方式查看GET job/type2/1返回文档信息{ _index: job, _type: type2, _id: 1, _version: 3, found: true, _source: { title: Java, salary: 2000, desc: 易维护的代码, date: 2017-08-08 } }可以只查看_source中的部分字段GET job/type2/1?_sourcetitle,salary返回{ _index: job, _type: type2, _id: 1, _version: 3, found: true, _source: { title: Java, salary: 2000 } }修改文档一种是通过PUT的全覆盖方式旧数据将被删除以新的代替。PUT job/type2/1 { title:Java, salary:1400, desc:易维护的代码, date:2017-08-08 }另一种是通过POST方式只对部分字段进行修改。POST job/type2/1/_update { doc:{ salary:2000 } }删除文档通过DELETE方式可删除文档DELETE job/type2/1mget取回多个文档可参考https://www.elastic.co/guide/cn/elasticsearch/guide/current/_Retrieving_Multiple_Documents.html通过将查询合并可以减少连接次数提高效率。GET _mget { docs : [ { _index : job, _type : type2, _id : 1 }, { _index : job, _type : type2, _id : 2, _source: salary } ] }返回两个文档{ docs: [ { _index: job, _type: type2, _id: 1, _version: 3, found: true, _source: { title: Java, salary: 2000, desc: 易维护的代码, date: 2017-08-08 } }, { _index: job, _type: type2, _id: 2, found: false } ] }还可进行简写比如index和type都相同查找两个id可以写作GET job/type2/_mget { ids:[1, 2] } }bulk批量操作bulk API 允许在单个步骤中进行多次 create 、 index 、 update 或 delete 请求。详细参考https://www.elastic.co/guide/cn/elasticsearch/guide/current/bulk.htmlbulk批量操作的请求比较特殊格式为{ action: { metadata }}\n{ request body }\n{ action: { metadata }}\n{ request body }\n ...一般两行为一条请求第一行说明操作和元数据第二行是操作数据。不过delete请求只有一行。POST _bulk { delete: { _index: website, _type: blog, _id: 123 }} { create: { _index: website, _type: blog, _id: 123 }} { title: My first blog post } { index: { _index: website, _type: blog }} { title: My second blog post } { update: { _index: website, _type: blog, _id: 123, _retry_on_conflict : 3} } { doc : {title : My updated blog post} }返回结果会列出每个请求的处理状态。{ took: 4, errors: false, items: [ { delete: { _index: website, _type: blog, _id: 123, _version: 2, status: 200, found: true }}, { create: { _index: website, _type: blog, _id: 123, _version: 3, status: 201 }}, { create: { _index: website, _type: blog, _id: EiwfApScQiiy7TIKFxRCTw, _version: 1, status: 201 }}, { update: { _index: website, _type: blog, _id: 123, _version: 4, status: 200 }} ] }通过以上操作可以将数据以一定的组织方式写入到es中。下一篇将总结如何进行搜索和查找。感谢你的阅读 文章如有错误之处还请不吝批评指正

相关新闻

TPIC7710EVM评估模块硬件解析与汽车电子驱动设计实践

TPIC7710EVM评估模块硬件解析与汽车电子驱动设计实践

1. 项目概述:TPIC7710EVM评估模块硬件深度解析在汽车电子和嵌入式系统开发领域,尤其是在车身控制、执行器驱动这类对可靠性和实时性要求极高的场景中,一颗芯片的数据手册往往不足以让工程师完全放心。数据手册告诉你它能做什么,但…

2026/7/28 16:09:42阅读更多 →
java学习(88):Charactor包装类

java学习(88):Charactor包装类

//Character包装类 public class test23 {public static void main(String[] args){char chA;//使用构造方法Character obj1new Character(中);//使用静态方法Character obj2Character.valueOf(ch);//获取char值char zhongobj1.charValue();System.out.println(zhong);int reso…

2026/7/28 16:09:42阅读更多 →
2026 AI 搜索范式演进:基于语义向量空间对齐与多 Agent 协同的 GEO 架构设计与平台工程实战

2026 AI 搜索范式演进:基于语义向量空间对齐与多 Agent 协同的 GEO 架构设计与平台工程实战

摘要 随着大语言模型(LLM)与检索增强生成(RAG)深度融入信息分发场景,传统依赖倒排索引与关键词堆砌的搜索引擎优化(SEO)正在向生成式引擎优化(GEO)全面跃迁。在多 Agent…

2026/7/28 16:07:42阅读更多 →
DMG是什么文件?Windows怎么打开?用软领Win解压缩轻松查看和提取

DMG是什么文件?Windows怎么打开?用软领Win解压缩轻松查看和提取

在日常工作中,不少用户会从苹果设备或网络下载到以 .dmg 结尾的文件。这种格式在 Windows 系统中默认无法直接打开,很多人因此困惑。其实,DMG 是 macOS 系统常见的磁盘镜像文件,类似于一个“容器”,里面通常打包了软件…

2026/7/28 17:25:58阅读更多 →
别把 RabbitMQ 当万能缓存:日均千万订单系统如何真正实现解耦、削峰与可靠事件驱动

别把 RabbitMQ 当万能缓存:日均千万订单系统如何真正实现解耦、削峰与可靠事件驱动

别把 RabbitMQ 当万能缓存:日均千万订单系统如何真正实现解耦、削峰与可靠事件驱动 当大促零点的流量在几十秒内冲到平时的十几倍,真正决定系统能否活下来的,不是“有没有接 RabbitMQ”,而是你是否解决了业务事务与消息发送的一致性、消息重复消费、失败重试风暴、队列容量…

2026/7/28 17:25:58阅读更多 →
a label can only be part of a statement and a declaration is not a statement

a label can only be part of a statement and a declaration is not a statement

原因是由于在case之后进行变量的声明对此问题的分析:由于switch的几个case语句在同一个作用域(因为case 语句只是标签,它们共属于一个swtich语句块),所以如果在某个case下面声明变量的话,对象的作用域是在俩…

2026/7/28 17:25:58阅读更多 →
MySQL还是PostgreSQL?亿级支付系统真实选型与迁移复盘

MySQL还是PostgreSQL?亿级支付系统真实选型与迁移复盘

MySQL还是PostgreSQL?亿级支付系统真实选型与迁移复盘 你还在用“大家都在用”作为数据库选型的主要理由吗? 当核心表逼近 3 亿行、交易流水接近 9 亿行,当 JSON 查询、复杂对账、风控聚合和区域合规同时压向数据库时,真正危险的并不是 MySQL 或 PostgreSQL 本身,而是团队…

2026/7/28 17:25:58阅读更多 →
java有效的括号

java有效的括号

题目:给定一个只包括 ‘(’,‘)’,‘{’,‘}’,‘[’,‘]’ 的字符串,判断字符串是否有效。 有效字符串需满足: 左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。 注意空字符串…

2026/7/28 17:25:58阅读更多 →
JavaSE:基础入门(一)

JavaSE:基础入门(一)

1、关键字 被java赋予特定含义的单词,特点:全部都是小写 以下是java的关键字列表,先了解下即可,其中void就是关键字,而 Void就不是关键字,只是一个占位符的类 访问控制 private protected public类,方法和变量修…

2026/7/28 17:23:57阅读更多 →
覆盖国产 + 海外 + 开源模型,OpenClaw 2.7.9 Windows/Mac 双端部署详解

覆盖国产 + 海外 + 开源模型,OpenClaw 2.7.9 Windows/Mac 双端部署详解

🔹 工具基础介绍 OpenClaw 是开源生态中一款实用性较强的本地智能工具,凭借本地离线运行、可视化图形操作和任务自动化三大核心特性,赢得了众多用户的青睐。与普通在线对话AI工具不同,它属于能够直接操控本机软硬件的智能数字员工…

2026/7/28 4:06:39阅读更多 →
伺服阀焊完微漏毁整机?精密激光焊接三关锁住高压

伺服阀焊完微漏毁整机?精密激光焊接三关锁住高压

所谓液压伺服阀体的精密激光焊接,是用激光束对阀座壳体(通常为不锈钢或铝合金)进行密封焊接,使阀体在21-35MPa的高压液压油或压缩气体中长期运行而不发生介质泄漏。液压伺服阀是高端液压系统的"大脑"。从航空航天飞行控…

2026/7/28 2:08:06阅读更多 →
D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南

D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南

D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南 【免费下载链接】d2dx D2DX is a complete solution to make Diablo II run well on modern PCs, with high fps and better resolutions. 项目地址: https://gitcode.com/gh_mirrors/d2/d2dx 你是否还在…

2026/7/28 1:38:28阅读更多 →
告别臃肿!3步让你的暗影精灵笔记本重获新生

告别臃肿!3步让你的暗影精灵笔记本重获新生

告别臃肿!3步让你的暗影精灵笔记本重获新生 【免费下载链接】OmenSuperHub Control Omen laptop performance, fan speeds, and keyboard lighting, and unlock power limits. 项目地址: https://gitcode.com/gh_mirrors/om/OmenSuperHub 你是否也曾为官方Om…

2026/7/28 0:00:29阅读更多 →
RAG必踩坑!财报法规检索不准?这款开源工具让答案浮出水面,准确率飙升98.7%!

RAG必踩坑!财报法规检索不准?这款开源工具让答案浮出水面,准确率飙升98.7%!

做 RAG 的人应该都踩过这个致命的坑:把几百页的财报、法规、技术手册扔给向量库,问一个具体问题,搜出来的全是沾边但没用的内容 —— 关键信息要么被硬切块拆碎了,要么藏在几十条结果的最下面。语义相似≠真正相关,这个…

2026/7/28 0:00:29阅读更多 →
抖音视频文案提取工具全指南:免费2026版、手机App、在线工具一网打尽

抖音视频文案提取工具全指南:免费2026版、手机App、在线工具一网打尽

2026年做短视频运营,从抖音上扒文案早就不是偷偷抄笔记的事了。我刚开始做内容的时候,每天刷半小时抖音,手动把爆款视频的口播敲进备忘录,一条2分钟的视频得花十来分钟,碰到语速快的还要反复回听。后来试了一圈工具&am…

2026/7/28 0:00:29阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/27 16:57:54阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/28 3:17:03阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/28 2:35:58阅读更多 →