当前位置: 首页 > news >正文

ElasticSearch系列 - SpringBoot整合ES:精确值查询 term

文章目录

      • 01. ElasticSearch term 查询?
      • 02. ElasticSearch term 查询数值型数据?
      • 03. ElasticSearch term 查询字符串类型数据?
      • 04. ElasticSearch term 查询日期型数据?
      • 05. ElasticSearch term 查询日期型数据的注意事项?
      • 06. ElasticSearch term 查询布尔型数据?
      • 07. ElasticSearch term 查询数组型数据?
      • 08. ElasticSearch term 查询对象型数据?
      • 09. SpringBoot整合ES实现term查询?
      • 10. TermQueryBuilder 源码

01. ElasticSearch term 查询?

在 ElasticSearch 中,term 查询是一种用于查找指定字段中包含指定值的文档的查询方式。term 查询是一种精确匹配查询,它会精确地匹配指定字段中的值,不会对查询关键词进行分词处理。

GET /${index_name}/_search 
{ "query": { "term": { "${FIELD}": {            //搜索字段名称 "value": "${ VALUE }"  //搜索值 } } } 
}  

FIELD和VALUE分别代表字段名称和查询值,FIELD的数据类型可以是数值型、布尔型、日期型、数组型及关键字等。

02. ElasticSearch term 查询数值型数据?

① 索引文档,构造数据:

PUT /my_index
{"mappings": {"properties": {"price":{"type": "integer"}}}
}PUT /my_index/_doc/1
{"price":10
}PUT /my_index/_doc/2
{"price":20
}PUT /my_index/_doc/3
{"price":30
}

② 查询 price 字段包含 10的文档:

GET /my_index/_search
{"query": {"term": {"price": {"value": "10"}}}
}
{"took" : 2,"timed_out" : false,"_shards" : {"total" : 1,"successful" : 1,"skipped" : 0,"failed" : 0},"hits" : {"total" : {"value" : 1,"relation" : "eq"},"max_score" : 1.0,"hits" : [{"_index" : "my_index","_type" : "_doc","_id" : "1","_score" : 1.0,"_source" : {"price" : 10}}]}
}

③ 需要注意的是,term 查询是一种精确匹配查询,它不会对查询关键词进行分词处理。因此,如果查询关键词包含多个单词,term 查询可能无法匹配到任何文档。在这种情况下,可以考虑使用 match 查询或者 phrase 查询等其他查询方式。

GET /my_index/_search
{"query": {"term": {"title": {"value": "金都时尚"}}}
}
{"took" : 0,"timed_out" : false,"_shards" : {"total" : 1,"successful" : 1,"skipped" : 0,"failed" : 0},"hits" : {"total" : {"value" : 0,"relation" : "eq"},"max_score" : null,"hits" : [ ]}
}

03. ElasticSearch term 查询字符串类型数据?

在 ElasticSearch 中,term 查询是一种用于精确匹配查询的查询方式,可以用于查询 keyword 类型的字符串。term 查询会将查询关键词作为一个整体进行匹配,只有当查询关键词与文档中的词条完全匹配时,才会返回匹配的文档。keyword类型不会对文本进行分词,term查询不会对关键词进行分词,如果查询关键词分词了或者文本分词了,都有可能查询不到结果。

① 索引文档,构造数据:

PUT /my_index
{"mappings": {"properties": {"tag":{"type": "keyword"}}}
}PUT /my_index/_doc/1
{"tag":"这是一个标签一"
}PUT /my_index/_doc/2
{"tag":"这是一个标签二"
}PUT /my_index/_doc/3
{"tag":"这是一个标签三"
}

② 查询 tag 字段包含 “这是一个标签三” 的文档:

GET /my_index/_search
{"query": {"term": {"tag": {"value": "这是一个标签三"}}}
}

term 查询会将查询关键词作为一个整体进行匹配,它不会对查询关键词进行分词处理。只有当文档中的 "tag " 字段的值与查询关键词完全匹配时,才会返回匹配的文档。

{"took" : 2,"timed_out" : false,"_shards" : {"total" : 1,"successful" : 1,"skipped" : 0,"failed" : 0},"hits" : {"total" : {"value" : 1,"relation" : "eq"},"max_score" : 0.9808292,"hits" : [{"_index" : "my_index","_type" : "_doc","_id" : "3","_score" : 0.9808292,"_source" : {"tag" : "这是一个标签三"}}]}
}

04. ElasticSearch term 查询日期型数据?

在Elasticsearch中,可以使用日期类型来索引日期型数据,并且可以指定日期的格式。日期类型支持多种日期格式,并且可以用于搜索、聚合和排序操作。

① 索引文档,构造数据:

PUT /my_index
{"mappings": {"properties": {"createTime":{"type": "date","format": "yyyy-MM-dd HH:mm:ss"}}}
}PUT /my_index/_doc/1
{"createTime":"2023-03-29 10:30:11"
}PUT /my_index/_doc/2
{"createTime":"2023-03-29 10:35:11"
}PUT /my_index/_doc/3
{"createTime":"2023-03-29 10:38:11"
}

② 查询 createTime 字段包含 “2023-03-29 10:38:11” 的文档:

GET /my_index/_search
{"query": {"term": {"createTime":  "2023-03-29 10:30:11"}}
}
{"took" : 12,"timed_out" : false,"_shards" : {"total" : 1,"successful" : 1,"skipped" : 0,"failed" : 0},"hits" : {"total" : {"value" : 1,"relation" : "eq"},"max_score" : 1.0,"hits" : [{"_index" : "my_index","_type" : "_doc","_id" : "1","_score" : 1.0,"_source" : {"createTime" : "2023-03-29 10:30:11"}}]}
}

③ 注意:如果"create_time"字段包含时间信息,需要使用完整的日期时间格式来进行匹配,否则查询将报错:

GET /my_index/_search
{"query": {"term": {"create_time": {"value": "2023-03-28"}}}
}

报错结果:

"caused_by": {"type": "date_time_parse_exception","reason": "Text '2023-03-28' could not be parsed at index 10"
}

05. ElasticSearch term 查询日期型数据的注意事项?

在Elasticsearch中,日期型数据的默认格式是ISO 8601格式,即yyyy-MM-dd’T’HH:mm:ss.SSSZ。其中,yyyy表示年份,MM表示月份,dd表示日期,HH表示小时,mm表示分钟,ss表示秒,SSS表示毫秒,Z表示时区。

PUT /my_index
{"mappings": {"properties": {"create_time": {"type": "date"}}}
}

在这个示例中,"create_time"字段被定义为一个日期类型的字段,会使用默认的数据格式即 ISO 8601 格式。

要索引和创建日期型数据,您可以使用以下示例请求:

PUT /my_index/_doc/1
{"create_time": "2023-03-28T12:00:00"
}

如果您要搜索所有"create_time"字段值在某个日期之后的文档,您可以使用以下查询:

GET /my_index/_search
{"query": {"range": {"create_time": {"gte": "2023-03-28T00:00:00"}}}
}

对于日期型的字段查询,需要按照该字段在mappings中定义的格式进行查询。如果create_time字段使用默认的格式,那么下面的请求是错误的:

GET /my_index/_search 
{ "query": { "term": { "create_time": {               "value": "2021-01-15 12:00:00"  //使用与默认格式不符的日期格式查询} } } 
} 

06. ElasticSearch term 查询布尔型数据?

在Elasticsearch中,可以使用term查询来搜索布尔型数据。布尔型数据只有两个可能的值:true和false。因此,term查询是精确匹配查询,只能用于搜索精确匹配的值,而不能用于搜索范围或模糊匹配的值。

① 索引文档,构造数据:

PUT /my_index
{"mappings": {"properties": {"flag":{"type": "boolean"}}}
}PUT /my_index/_doc/1
{"flag":true
}PUT /my_index/_doc/2
{"flag":true
}PUT /my_index/_doc/3
{"flag":false
}

② 查询 flag 字段包含 true 的文档:

GET /my_index/_search
{"query": {"term": {"flag": true}}
}
{"took" : 0,"timed_out" : false,"_shards" : {"total" : 1,"successful" : 1,"skipped" : 0,"failed" : 0},"hits" : {"total" : {"value" : 2,"relation" : "eq"},"max_score" : 0.47000363,"hits" : [{"_index" : "my_index","_type" : "_doc","_id" : "1","_score" : 0.47000363,"_source" : {"flag" : true}},{"_index" : "my_index","_type" : "_doc","_id" : "2","_score" : 0.47000363,"_source" : {"flag" : true}}]}
}

07. ElasticSearch term 查询数组型数据?

在Elasticsearch中,可以使用term查询来查询数组类型的数据。term查询用于匹配一个字段中包含指定值的文档。

① 索引文档,构造数据:

PUT /my_index
{"mappings": {"properties": {"tags":{"type": "keyword"}}}
}PUT /my_index/_doc/1
{"tags":["tag1"]
}PUT /my_index/_doc/2
{"tags":["tag2"]
}PUT /my_index/_doc/3
{"tags":["tag1","tag2"]
}PUT /my_index/_doc/4
{"tags":["tag1","tag2","tag3"]
}

② 查询 tags 字段包含 tag1 的文档,将返回所有"tags"数组中包含"tag1"的文档。

GET /my_index/_search
{"query": {"term": {"tags":"tag1"}}
}
{"took" : 1,"timed_out" : false,"_shards" : {"total" : 1,"successful" : 1,"skipped" : 0,"failed" : 0},"hits" : {"total" : {"value" : 3,"relation" : "eq"},"max_score" : 0.43250346,"hits" : [{"_index" : "my_index","_type" : "_doc","_id" : "1","_score" : 0.43250346,"_source" : {"tags" : ["tag1"]}},{"_index" : "my_index","_type" : "_doc","_id" : "3","_score" : 0.43250346,"_source" : {"tags" : ["tag1","tag2"]}},{"_index" : "my_index","_type" : "_doc","_id" : "4","_score" : 0.43250346,"_source" : {"tags" : ["tag1","tag2","tag3"]}}]}
}

③ 需要注意的是,如果"tags"字段包含多个值,您需要使用精确匹配所有值的查询,则需要使用以下查询:

GET /my_index/_search
{"query": {"bool": {"must": [{"term": {"tags": "tag1"}},{"term": {"tags": "tag2"}},{"term": {"tags": "tag3"}}]}}
}

搜索结果为:

{"took" : 5,"timed_out" : false,"_shards" : {"total" : 1,"successful" : 1,"skipped" : 0,"failed" : 0},"hits" : {"total" : {"value" : 1,"relation" : "eq"},"max_score" : 2.3249426,"hits" : [{"_index" : "my_index","_type" : "_doc","_id" : "4","_score" : 2.3249426,"_source" : {"tags" : ["tag1","tag2","tag3"]}}]}
}

08. ElasticSearch term 查询对象型数据?

① 索引文档,构造数据,映射中包含了一个名为"person"的对象类型字段

PUT /my_index
{"mappings": {"properties": {"person": {"type": "object","properties": {"name": {"type": "keyword"},"age": {"type": "integer"},"address": {"type": "keyword"}}}}}
}PUT /my_index/_doc/1
{"person": {"name": "John","age": 30,"address": "123 Main St"}
}PUT /my_index/_doc/2
{"person": {"name": "Alex","age": 20,"address": "123 Main St"}
}PUT /my_index/_doc/3
{"person": {"name": "Smith","age": 10,"address": "123 Main St"}
}

在这个示例中,“person"字段被定义为一个对象类型的字段,并且包含了三个子字段,即"name”、“age"和"address”。

② 查询person.name 字段中包含 Smith 的文档:

GET /my_index/_search
{"query": {"term": {"person.name": "Smith"}}
}
{"took" : 1,"timed_out" : false,"_shards" : {"total" : 1,"successful" : 1,"skipped" : 0,"failed" : 0},"hits" : {"total" : {"value" : 1,"relation" : "eq"},"max_score" : 0.9808292,"hits" : [{"_index" : "my_index","_type" : "_doc","_id" : "3","_score" : 0.9808292,"_source" : {"person" : {"name" : "Smith","age" : 10,"address" : "123 Main St"}}}]}
}

③ 需要注意的是,如果对象型数据包含多个字段,您需要使用精确匹配所有字段的查询。例如,如果对象型数据包含"name"和"age","address"字段,您需要使用以下查询:

GET /my_index/_search
{"query": {"bool": {"must": [{"term": {"person.name":"John"}},{"term": {"person.age": 30}},{"term": {"person.address": {"value": "123 Main St"}}}]}}
}

搜索结果为:

{"took" : 1,"timed_out" : false,"_shards" : {"total" : 1,"successful" : 1,"skipped" : 0,"failed" : 0},"hits" : {"total" : {"value" : 1,"relation" : "eq"},"max_score" : 2.1143606,"hits" : [{"_index" : "my_index","_type" : "_doc","_id" : "1","_score" : 2.1143606,"_source" : {"person" : {"name" : "John","age" : 30,"address" : "123 Main St"}}}]}
}

09. SpringBoot整合ES实现term查询?

GET /my_index/_search
{"query": {"term": {"price": {"value": "337"}}}
}
@Slf4j
@Service
public class ElasticSearchImpl {@Autowiredprivate RestHighLevelClient restHighLevelClient;public void searchUser() throws IOException {SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();TermQueryBuilder termQueryBuilder = new TermQueryBuilder("price",337);searchSourceBuilder.query(termQueryBuilder);SearchRequest searchRequest = new SearchRequest(new String[]{"my_index"},searchSourceBuilder);SearchResponse searchResponse = restHighLevelClient.search(searchRequest, RequestOptions.DEFAULT);System.out.println(searchResponse);}
}

10. TermQueryBuilder 源码

public class TermQueryBuilder extends BaseTermQueryBuilder<TermQueryBuilder> {public static final String NAME = "term";private static final ParseField TERM_FIELD = new ParseField("term");private static final ParseField VALUE_FIELD = new ParseField("value");/** @see BaseTermQueryBuilder#BaseTermQueryBuilder(String, String) */public TermQueryBuilder(String fieldName, String value) {super(fieldName, (Object) value);}/** @see BaseTermQueryBuilder#BaseTermQueryBuilder(String, int) */public TermQueryBuilder(String fieldName, int value) {super(fieldName, (Object) value);}/** @see BaseTermQueryBuilder#BaseTermQueryBuilder(String, long) */public TermQueryBuilder(String fieldName, long value) {super(fieldName, (Object) value);}/** @see BaseTermQueryBuilder#BaseTermQueryBuilder(String, float) */public TermQueryBuilder(String fieldName, float value) {super(fieldName, (Object) value);}/** @see BaseTermQueryBuilder#BaseTermQueryBuilder(String, double) */public TermQueryBuilder(String fieldName, double value) {super(fieldName, (Object) value);}/** @see BaseTermQueryBuilder#BaseTermQueryBuilder(String, boolean) */public TermQueryBuilder(String fieldName, boolean value) {super(fieldName, (Object) value);}/** @see BaseTermQueryBuilder#BaseTermQueryBuilder(String, Object) */public TermQueryBuilder(String fieldName, Object value) {super(fieldName, value);}
}

相关文章:

ElasticSearch系列 - SpringBoot整合ES:精确值查询 term

文章目录01. ElasticSearch term 查询&#xff1f;02. ElasticSearch term 查询数值型数据&#xff1f;03. ElasticSearch term 查询字符串类型数据&#xff1f;04. ElasticSearch term 查询日期型数据&#xff1f;05. ElasticSearch term 查询日期型数据的注意事项&#xff1f…...

关于async/await、promise和setTimeout执行顺序

关于async/await、promise和setTimeout执行顺序 async function async1() {console.log(async1 start);await async2();console.log(asnyc1 end); } async function async2() {console.log(async2); } console.log(script start); setTimeout(() > {console.log(setTimeOut…...

2023-03-31:如何计算字符串中不同的非空回文子序列个数?

2023-03-31&#xff1a;给定一个字符串 s&#xff0c;返回 s 中不同的非空 回文子序列 个数&#xff0c; 通过从 s 中删除 0 个或多个字符来获得子序列。 如果一个字符序列与它反转后的字符序列一致&#xff0c;那么它是 回文字符序列。 如果有某个 i , 满足 ai ! bi &#xff…...

D. The Number of Imposters(二分图染色)

Problem - D - Codeforces Theofanis开始玩名为“Among them”的新网络游戏。然而&#xff0c;他总是和塞浦路斯球员一起踢球&#xff0c;他们都有一个相同的名字:“安德烈亚斯”(塞浦路斯最常见的名字)。在每个游戏中&#xff0c;Theofanis和n个其他玩家一起玩。因为它们都有相…...

图片太大怎么改小kb?简单的图片压缩方法分享

平时当我们在朋友圈分享一些有趣的照片或者使用图片素材进行上传的时候&#xff0c;经常遇到图片大小kb超出平台限制的情况&#xff0c;这时就无法正常上传了&#xff0c;遇到这种情况我们就需要想办法降低图片大小kb&#xff0c;那么有什么办法能够压缩图片大小呢&#xff1f;…...

【python-leecode刷题】动态规划类问题----以53. 最大子数组和为例

作者&#xff1a;20岁爱吃必胜客&#xff08;坤制作人&#xff09;&#xff0c;近十年开发经验, 跨域学习者&#xff0c;目前于海外某世界知名高校就读计算机相关专业。荣誉&#xff1a;阿里云博客专家认证、腾讯开发者社区优质创作者&#xff0c;在CTF省赛校赛多次取得好成绩。…...

Idea常用快捷键设置

设置来源于尚硅谷宋红康老师 第1组&#xff1a;通用型 说明 快捷键 复制代码-copy ctrl c 粘贴-paste ctrl v 剪切-cut ctrl x 撤销-undo ctrl z 反撤销-redo ctrl shift z 保存-save all ctrl s 全选-select all ctrl a 第2组&#xff1a;提高编写速度&#xff08;上…...

【新2023Q2模拟题JAVA】华为OD机试 - 分苹果

最近更新的博客 华为od 2023 | 什么是华为od,od 薪资待遇,od机试题清单华为OD机试真题大全,用 Python 解华为机试题 | 机试宝典【华为OD机试】全流程解析+经验分享,题型分享,防作弊指南华为od机试,独家整理 已参加机试人员的实战技巧本篇题解:分苹果 题目 AB两个人把苹果…...

【博学谷学习记录】超强总结,用心分享丨人工智能 自然语言处理 BERT、GPT、ELMO对比学习简记

目录三模型架构BERTGPTELMO三者差异点三模型架构 BERT 优点 在11个NLP任务上取得SOAT成绩.利用了Transformer的并行化能力以及长语句捕捉语义依赖和结构依赖.BERT实现了双向Transformer并为后续的微调任务留出足够的空间. 缺点 BERT模型太大, 太慢.BERT模型中的中文模型是以…...

【嵌入式Bluetooth应用开发笔记】第四篇:初探蓝牙HOST及应用开发(持续更新ing)

概念 蓝牙HOST(Bluetooth Host)是指能够连接到其他蓝牙设备并控制它们的设备。在蓝牙技术中,通常有两种类型的设备:蓝牙HOST和蓝牙SLAVE。蓝牙HOST通常是指拥有控制权的设备,它可以主动连接其他蓝牙设备并向其发送命令。相反,蓝牙SLAVE则是指被动连接的设备,它接受来自…...

GORM 基础 -- CRUD 接口

1、Create 1.1 创建纪录 user : User{Name: "Jinzhu", Age: 18, Birthday: time.Now()}result : db.Create(&user) // pass pointer of data to Createuser.ID // 回填插入数据的主键 result.Error // 返回的 error 信息 result.RowsAffect…...

为什么0代码自动化测试越来越受欢迎?一文2000字解析

目录 01、什么是零代码自动化测试 02、为什么零代码自动化测试越来越受欢迎 03、有代码和零代码自动化有什么区别 04、零代码自动化测试可以帮助你做什么 05、零代码自动化测试方法&#xff1a;NLP&#xff08;自然语言处理&#xff09; 06、为什么我们需要零代码自动化测…...

cleanmymac最新2023版 mac清理软件CleanMyMac X4.12.5 中文版功能介绍

CleanMyMac X4.12.5 中文版只需两个简单步骤就可以把系统里那些乱七八糟的无用文件统统清理掉&#xff0c;节省宝贵的磁盘空间。cleanmymac x个人认为X代表界面上的最大升级&#xff0c;功能方面有更多增加&#xff0c;与最新macOS系统更加兼容&#xff0c;流畅地与系统性能更加…...

pyhon部署注意事项

前言&#xff1a;相信看到这篇文章的小伙伴都或多或少有一些编程基础&#xff0c;懂得一些linux的基本命令了吧&#xff0c;本篇文章将带领大家服务器如何部署一个使用django框架开发的一个网站进行云服务器端的部署。 文章使用到的的工具 Python&#xff1a;一种编程语言&…...

宣城x移动云,打造“城市级物联感知平台”

随着新一代信息技术与城市现代化的深度融合&#xff0c;智慧城市建设的重要性也愈发凸显。而在智慧城市建设中&#xff0c;物联网感知体系扮演着中枢神经系统的角色。 安徽宣城紧抓长三角城市群一体化发展机遇&#xff0c;为构建“数字宣城”建设发展新模式&#xff0c;携手移…...

英伟达Jetson NX套件刷机,配置Ubuntu20。

0. 前言 人并没有眼见得那么光鲜亮丽&#xff0c;博客也是。 今天推荐一本书《一百个人的十年》&#xff0c;没错就是我们的那十年&#xff08;60年代&#xff09;。写得很真实&#xff0c;牛棚猪圈&#xff0c;确实如此。 1. SdkManager安装 官网下载。 打开终端 执行命令sud…...

Vue计算属性

计算属性 ​ 计算属性的重点突出在属性两个字上(属性是名词)&#xff0c;首先它是个属性其次这个属性有计算的能力(计算是动词)&#xff0c;这里的计算就是个函数;简单点说&#xff0c;它就是一个能够将计算结果缓存起来的属性(将行为转化成了静态的属性)&#xff0c;仅此而已…...

代码随想录刷题-字符串-反转字符串

文章目录反转字符串习题双指针swap 的两种方式反转字符串 本节对应代码随想录中&#xff1a;代码随想录&#xff0c;讲解视频&#xff1a;字符串基础操作&#xff01; | LeetCode&#xff1a;344.反转字符串_哔哩哔哩_bilibili 习题 题目链接&#xff1a;344. 反转字符串 - …...

14-链表练习-剑指 Offer II 021. 删除链表的倒数第 n 个结点

题目 给定一个链表&#xff0c;删除链表的倒数第 n 个结点&#xff0c;并且返回链表的头结点。 示例 1&#xff1a; 输入&#xff1a;head [1,2,3,4,5], n 2 输出&#xff1a;[1,2,3,5] 示例 2&#xff1a; 输入&#xff1a;head [1], n 1 输出&#xff1a;[] 示例 3&…...

用Java解决华为OD机试考题,真的高效,真的强,来吧,清单奉上,祝你上岸

华为 OD 机试题最新&#xff08;Java&#xff09;清单&#xff08;机试题库还在逐日更新&#xff09; 题库目录 直接在本页使用 CtrlF&#xff0c;输入题目名称就可以进行检索。 序号文章分值1【华为OD机试真题JAVA】快递装载问题_国服第二切图仔的博客-CSDN博客1002【华为…...

业务系统对接大模型的基础方案:架构设计与关键步骤

业务系统对接大模型&#xff1a;架构设计与关键步骤 在当今数字化转型的浪潮中&#xff0c;大语言模型&#xff08;LLM&#xff09;已成为企业提升业务效率和创新能力的关键技术之一。将大模型集成到业务系统中&#xff0c;不仅可以优化用户体验&#xff0c;还能为业务决策提供…...

工业安全零事故的智能守护者:一体化AI智能安防平台

前言&#xff1a; 通过AI视觉技术&#xff0c;为船厂提供全面的安全监控解决方案&#xff0c;涵盖交通违规检测、起重机轨道安全、非法入侵检测、盗窃防范、安全规范执行监控等多个方面&#xff0c;能够实现对应负责人反馈机制&#xff0c;并最终实现数据的统计报表。提升船厂…...

Nginx server_name 配置说明

Nginx 是一个高性能的反向代理和负载均衡服务器&#xff0c;其核心配置之一是 server 块中的 server_name 指令。server_name 决定了 Nginx 如何根据客户端请求的 Host 头匹配对应的虚拟主机&#xff08;Virtual Host&#xff09;。 1. 简介 Nginx 使用 server_name 指令来确定…...

ETLCloud可能遇到的问题有哪些?常见坑位解析

数据集成平台ETLCloud&#xff0c;主要用于支持数据的抽取&#xff08;Extract&#xff09;、转换&#xff08;Transform&#xff09;和加载&#xff08;Load&#xff09;过程。提供了一个简洁直观的界面&#xff0c;以便用户可以在不同的数据源之间轻松地进行数据迁移和转换。…...

CRMEB 框架中 PHP 上传扩展开发:涵盖本地上传及阿里云 OSS、腾讯云 COS、七牛云

目前已有本地上传、阿里云OSS上传、腾讯云COS上传、七牛云上传扩展 扩展入口文件 文件目录 crmeb\services\upload\Upload.php namespace crmeb\services\upload;use crmeb\basic\BaseManager; use think\facade\Config;/*** Class Upload* package crmeb\services\upload* …...

ios苹果系统,js 滑动屏幕、锚定无效

现象&#xff1a;window.addEventListener监听touch无效&#xff0c;划不动屏幕&#xff0c;但是代码逻辑都有执行到。 scrollIntoView也无效。 原因&#xff1a;这是因为 iOS 的触摸事件处理机制和 touch-action: none 的设置有关。ios有太多得交互动作&#xff0c;从而会影响…...

宇树科技,改名了!

提到国内具身智能和机器人领域的代表企业&#xff0c;那宇树科技&#xff08;Unitree&#xff09;必须名列其榜。 最近&#xff0c;宇树科技的一项新变动消息在业界引发了不少关注和讨论&#xff0c;即&#xff1a; 宇树向其合作伙伴发布了一封公司名称变更函称&#xff0c;因…...

MySQL 索引底层结构揭秘:B-Tree 与 B+Tree 的区别与应用

文章目录 一、背景知识&#xff1a;什么是 B-Tree 和 BTree&#xff1f; B-Tree&#xff08;平衡多路查找树&#xff09; BTree&#xff08;B-Tree 的变种&#xff09; 二、结构对比&#xff1a;一张图看懂 三、为什么 MySQL InnoDB 选择 BTree&#xff1f; 1. 范围查询更快 2…...

MySQL 主从同步异常处理

阅读原文&#xff1a;https://www.xiaozaoshu.top/articles/mysql-m-s-update-pk MySQL 做双主&#xff0c;遇到的这个错误&#xff1a; Could not execute Update_rows event on table ... Error_code: 1032是 MySQL 主从复制时的经典错误之一&#xff0c;通常表示&#xff…...

使用SSE解决获取状态不一致问题

使用SSE解决获取状态不一致问题 1. 问题描述2. SSE介绍2.1 SSE 的工作原理2.2 SSE 的事件格式规范2.3 SSE与其他技术对比2.4 SSE 的优缺点 3. 实战代码 1. 问题描述 目前做的一个功能是上传多个文件&#xff0c;这个上传文件是整体功能的一部分&#xff0c;文件在上传的过程中…...