- 博客(105)
- 资源 (1)
- 收藏
- 关注

原创 Elasticsearch索引分片的数量及大小分配策略
Shard即数据分片,是ES的数据载体。在ES中数据分为primary shard(主分片)和replica shard(副本分片),每一个primary承载单个索引的一部分数据,分布于各个节点,replica为某个primary的副本,即备份。分片分配的原则是尽量均匀的分配在集群中的各个节点,以最大程度降低部分shard在出现意外时对整个集群乃至服务造成的影响。
2022-10-20 21:03:35
19374
7

原创 jdk(Windows/Mac含M1/M2 Arm原生JDK)安装,附各个版本JDK下载链接
Windows、Mac下JDK安装及配置含各个版本JDK下载链接含Arm原生JDK下载链接
2022-10-13 02:52:32
23183
2

原创 ES中 Nested 类型的原理和使用
nested属于object类型的一种,是Elasticsearch中用于复杂类型对象数组的索引操作。Elasticsearch没有内部对象的概念,因此,ES在存储复杂类型的时候会把对象的复杂层次结果扁平化为一个键值对列表。
2022-08-24 17:05:37
11346

原创 倒排索引:ES倒排索引底层原理及FST算法的实现过程
这也许是你全网你能找到的最详细的倒排索引的底层解读。博主把倒排索引的讲解划分为以下七个部分,理解难度递增,可根据自身需要选择依次阅读或者针对性阅读。通常来说,应付一般的面试,理解第一部分即可。如果需要面试搜索相关业务的岗位,需要深层次理解倒排索引,可根据自身情况选择阅读。本文花费了作者大量的精力来论证和整理,如果你喜欢作者的文章,请帮忙点个赞和关注吧 O(∩_∩)O ~。谢谢大家的支持。提到ES,大多数爱好者想到的都是搜索引擎,尽管这是个误区,但是也不得不提。大数据搜索最重要的三个要素分别是 “快”、“准”
2022-08-08 22:01:30
20449
19

原创 ES 性能调优,这可能是全网最详细的 Elasticsearch 性能调优指南
Elasticsearch 读写性能调优ES 架构和Mapping优化
2022-04-11 17:45:44
29275
6

原创 ES 中时间日期类型 “yyyy-MM-dd HH:mm:ss” 的完全避坑指南
文章目录ES中的日期类型案例原理揭秘路为何这么不平又一个坑总结ES 的时间类型为什么这么难用,有没有什么办法可以解决?ES中的日期类型时间和日期类型是我们作为开发每天都会遇到的一种常见数据类型。和Java中有所不同,Elasticsearch 在索引创建之前并不是必须要创建索引的mapping。关系型数据库的思维就是在中写入数据之前,并不强制创建表结构。我们不用事先声明字段名称,字段类型以及长度等属性就可以直接像一个不存在的表中直接写入数据。Elasticsearch把这种特性称之为dynamic m
2022-03-24 15:44:35
28163
7

原创 ES 深度分页问题及针对不同需求下的解决方案(Deep paging)
1、什么是深度分页(Deep paging)?1.1 ES中from+size分页分页问题是Elasticsearch中最常见的查询场景之一,正常情况下分页代码如实下面这样的:GET order_2290w/_search{ "from": 0, "size": 5}输出结果如下图:很好理解,即查询第一页的5条数据。图中数字2即返回的五条文档数据。但是如果我们查询的数据页数特别大,达到什么程度呢?当from + size大于10000的时候,就会出现问题,如下图报错信息所示:报
2021-10-16 20:22:34
15353
5
原创 Elasticsearch 滚动索引(Rollover Index)详解
滚动索引是 Elasticsearch 中管理时间序列数据的重要机制。通过自动创建新索引,滚动索引可以优化查询性能、简化数据管理,并支持时间序列数据的存储和查询。结合索引生命周期管理(ILM)和别名(Alias),滚动索引能够实现更强大的数据管理功能,适用于日志、监控数据等场景。
2025-03-17 23:05:51
1001
原创 Elasticsearch 向量检索详解
Elasticsearch 的向量检索是一种强大的技术,适用于处理高维向量数据的相似性搜索。通过将文本、图像等数据转换为向量,并结合高效的相似度计算,可以实现语义搜索、图像搜索、推荐系统等复杂场景。掌握向量检索的原理和使用方法,可以帮助开发者构建更智能的搜索应用。
2025-03-17 22:30:25
886
1
原创 Search after解决ES深度分页问题
search_after 是 Elasticsearch 中用于实现高效深度分页的机制。它通过基于排序值的游标机制,避免了传统分页的性能问题,特别适合处理大数据集的分页查询。使用时需要注意排序字段的唯一性和实时性,并结合实际场景选择合适的排序字段。
2025-03-17 21:32:06
1151
原创 ES中_cat/nodes返回结果参数的解释以及性能调优指南
是 Elasticsearch 中用于查看集群节点状态的重要工具。通过返回的字段信息,可以全面了解节点的资源使用情况、角色和健康状况。掌握这些字段的含义,有助于更好地监控和优化 Elasticsearch 集群的性能。API 支持多种可选参数,用于过滤和格式化输出。参数,可以返回带有表头的详细输出,便于理解每个字段的含义。API 用于查看集群中所有节点的信息。在 Elasticsearch 中,
2025-03-16 22:59:15
567
原创 Elasticsearch如何删除字段
Elasticsearch 索引具备不可变性,字段的类型是不可修改的,包括删除字段,因此一切通过修改当前索引的操作都是不可行的,包括:update API重建索引可以通过 Script 或者 Pipline 完成过滤字段,但是后者需要创建 pipline,因此更推荐前者。
2025-03-08 14:21:32
966
原创 Elastic如何获取当前系统时间
Elasticsearch 并没有直接提供一个 API 来返回当前系统时间,但可以通过以下方式间接获取或使用当前时间:使用 _ingest.timestamp 在 Ingest Pipeline 中获取当前时间。使用 Painless 脚本在查询或更新中获取当前时间。使用 now 关键字在查询中表示当前时间。利用 date 类型字段的默认值自动填充当前时间。使用 Kibana 的 Dev Tools 或 Elasticsearch 的 _nodes API 查看当前时间。
2025-03-07 14:24:59
1249
原创 Elasticsearch为索引设置自动时间戳,ES自动时间戳
Elasticsearch提供了多种方式来自动为索引添加时间戳字段。你可以通过索引映射、ingest pipeline、index template等方式来实现这一功能。根据你的具体需求,选择合适的方法来确保时间戳字段的准确性和一致性。通过合理配置时间戳字段,你可以更好地管理和分析数据,提升系统的可观测性和运维效率。希望本文对你理解和使用Elasticsearch的时间戳功能有所帮助!
2025-03-07 13:56:25
981
原创 Docker启动ES容器打包本地镜像
tar 文件实际上是 Docker 镜像的打包文件,它包含了镜像的所有层(layers)和元数据。Docker 镜像是通过多个层组成的,而 .tar 文件是将这些层打包成一个文件的形式。.tar 文件:当你使用 docker save 命令时,Docker 会将镜像的所有层打包成一个 .tar 文件。加载镜像:通过 docker load 命令,可以将 .tar 文件加载回 Docker,使其成为一个可用的镜像。镜像共享:将镜像打包成 .tar 文件后,可以通过文件共享的方式传递镜像。
2025-02-23 22:04:18
856
1
原创 【开源社区】使用 ES 实现多种地理位置检索
表示圆的多边形的精度定义为error_distance。下表是旨在帮助捕获在给定不同输入的情况下圆的半径如何影响多边形的边数的表格。最小边数为4,最大为1000。:经纬度坐标,只支持WGS84坐标系,坐标范围Lat值为[-90,90],Lon为[-180,180]:ES的特殊类型之一,用来描述复杂的几何图形的类型,比如点、线、面,多边形等二维几何模型。:在同一个平面内,两个点确定一个矩形,搜索矩形内的坐标。:以某个点为圆心查找指定半径的圆内的坐标。:查找给定多个点连成的多边形内的坐标。
2024-11-08 00:24:56
1662
原创 深度剖析Elasticsearch嵌套类型Nested
其实上述查询,和下面查询本质上没什么区别,因为bool query中的两个查询子句查询的文档是重合的。是对 nested 中嵌套的 order_goods 生效的,而非上层查询生效,致辞即实现了第一小节中描述的场景的查询。类型存储,现在我希望对订单及订单商品进行检索,下面的所有内容将围绕这一场景讲解。,用以存储订单相关商品信息,商品数量可以是多个,一个订单可能对应多个商品,这样其实会把订单中的其他商品也会查询出来,因为查询中并未对。上述查询的语义其实是这样的:查询订单为1,且订单的商品与。
2024-11-08 00:05:14
1543
原创 【开源社区】ES 高基数聚合性能调优
Elasticsearch term聚合 用于创建 给定字段的唯一值对应的存储桶。例如,包含国家名称的字段上的 term 聚合将为中国创建一个存储桶,为巴基斯坦创建一个存储桶,为俄罗斯创建一个存储桶,等等。在一般情况下,term聚合非常快,但在某些特殊情况下,它们可能会很慢。缓慢聚合的一个原因可能是集群配置错误。性能不佳的另一个原因可能是执行term聚合的字段上的值。在这篇博文中,我将首先简要概述为确保 Elasticsearch 集群的最佳性能应遵循的一般说明。
2024-11-07 23:57:23
782
原创 【开源社区】ELK 磁盘异常占用解决及优化实践
本文主要讨论在 CentOS环境下基于 rpm 包部署 ELK 系统磁盘异常占用的问题解析和解决方案。生产问题描述:以下问题现实场景基于ELK体系下,ES服务的磁盘占用问题解析。默认情况下,基于 RPM 安装的 Elasticsearch 服务的安装位置位于目录下,配置文件位于,在此前提下可能会遇到如下问题。
2024-11-07 23:39:55
553
原创 【开源社区】Elasticsearch(ES)中 exists 查询空值字段的坑
本文主要解决在 ES 中如何处理空只或者 NULL 值,如检索值为空的文档,如何存储空值或 NULL 值等。
2024-08-19 18:00:44
1948
1
原创 【开源社区】Elasticsearch(ES)中空值字段 null_value 及通过exists查找非空文档
字段,而此时源数据和搜索词都会被分词,如果给出了 null_value,ES 就不知道应不应该给这个 null_value 的值分词了,null_value 替换的原本就是索引数据,如果分词可能会影响搜索结果的准确性,使用户得到意想不到的结果,但是如果部分词又违背了 text 类型的设计理念和规则,因此选择了不支持。:在全文检索中,空值本来就会被作为停用词处理,在分词过程中就会被“干掉”,即便我们使用 term 做精准查询,不会被分词,空值也不会被创建索引,因此无法匹配到任何结果,这一点不同于关系数据库。
2024-08-09 10:29:04
2088
原创 06、三数之和:给你一个整数数组 nums ,请你返回所有和为 0 且不重复的三元组。
给你一个整数数组 nums ,判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i!= k ,同时还满足 nums[i] + nums[j] + nums[k] == 0。请你返回所有和为 0 且不重复的三元组。注意:答案中不可以包含重复的三元组。
2023-11-04 21:54:58
928
原创 12、最小覆盖子串:给你一个字符串 s 一个字符串 t ,返回 s 中涵盖 t 所有字符的最小子串。如果 s 中不存在涵盖 t 所有字符的子串,则返回空字符串 ““ 。
给你一个字符串 s 、一个字符串 t 。返回 s 中涵盖 t 所有字符的最小子串。如果 s 中不存在涵盖 t 所有字符的子串,则返回空字符串 “” 。示例 1:示例 2:输入:s = “a”, t = “a”输出:“a”解释:整个字符串 s 是最小覆盖子串。示例 3: 输入: s = “a”, t = “aa”输出: “”解释: t 中两个字符 ‘a’ 均应包含在 s 的子串中,因此没有符合条件的子字符串,返回空字符串。如下图所示,最下方方块中的就是我们需要打掉的每个不同类型砖块(其实就是不
2023-11-04 17:33:50
482
原创 05、盛水最多容器:给定一个长度为 n 的整数数组 height 。有 n 条垂线,第 i 条线的两个端点是 (i, 0) 和 (i, height[i]) 。 返回容器可以储存的最大水量。
给定一个长度为 n 的整数数组 height。有 n 条垂线,第 i 条线的两个端点是 (i, 0) 和 (i, height[i])。解释:图中垂直线代表输入数组 [1,8,6,2,5,4,8,3,7]。在此情况下,容器能够容纳水(表示为蓝色部分)的最大值为 49。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。返回容器可以储存的最大水量。说明:你不能倾斜容器。
2023-11-03 22:34:50
693
原创 03、最长连续数列:给定一个未排序的整数数组 nums ,找出数字连续的最长序列(不要求序列元素在原数组中连续)的长度
给定一个未排序的整数数组 nums ,找出数字连续的最长序列(不要求序列元素在原数组中连续)的长度。请你设计并实现时间复杂度为 O(n) 的算法解决此问题。
2023-11-03 22:07:24
969
原创 04、移动零:给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。
给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。
2023-11-02 16:08:50
764
原创 02、字母异位词分组:给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。
给你一个字符串数组,请你将 字母异位词 组合在一起。可以按任意顺序返回结果列表。字母异位词 是由重新排列源单词的所有字母得到的一个新单词。中的字符串的的最大长度。需要用哈希表存储全部字符串。中的字符串的的最大长度。个字符串,对于每个字符串,需要。
2023-11-01 10:07:31
374
原创 01、两数之和:给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。
给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。时间复杂度:O(N),其中 N 是数组中的元素数量。对于每一个元素 x,我们可以 O(1) 地寻找 target - x。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。空间复杂度:O(N),其中 N 是数组中的元素数量,主要为哈希表的开销。此题目要求返回的是两个符合要求的数组元素的下标,假设为。你可以按任意顺序返回答案。
2023-11-01 09:33:23
805
原创 第九章 聚合搜索: Aggregations
版权声明本文为Elastic开源社区版权所有,保证独立性和原创性,未获得授权和允许,任何组织和个人不得以任何方式传播或复制或分享。否则必将追究法律责任。知识内容输出不易,请尊重他人劳动成果。严禁随意传播、复制和盗用他人成果或文章内容用以商业或盈利目的!# 1、概述。
2023-06-11 09:08:35
1203
原创 ES 使用 Bucket Sort 对聚合结果分页
在这个例子中,我们首先使用 “terms” 聚合按照 “product_name” 字段进行分桶,并设置 “size” 为 5,以获取前 5 个产品。然后,在每个桶内部,使用 “bucket_sort” 对桶进行排序,根据 “sales_amount” 字段的值进行降序排序。Bucket Sort 和 Top Hits 有相似之处,他们之间的区别是:Bucket 是对聚合分桶的排序和分页,而 Top Hits 是对分桶聚合中每个桶里相关文档的聚合和排序。
2023-06-02 17:33:53
2543
2
原创 ES中使用 Top Hits 查询分桶聚合结果的每个桶的详细数据
Top hits(顶部命中)是一个聚合功能,用于在查询结果中返回每个桶(bucket)中的顶部 N 个文档。这对于需要在聚合结果中查看每个桶中的最相关或最高评分文档的情况非常有用。简单来说,Top Hits 就是对聚合结果中相关文档的详细展示,它不同于 Post Filter,Post Filter 是基于源数据的查询,和 Agg 没有因果关系,其结果不对 Aggs 产生任何影响。Top Hits 则是基于 Aggs 的结果的查询,其受到 Aggs 结果的影响。
2023-06-02 17:28:12
3208
2
原创 ES 布尔查询中 minimum_should_match 参数使用避坑
在 Elasticsearch (ES) 中,布尔查询(Boolean Query)是一种查询类型,它允许你组合多个查询子句以控制搜索结果的匹配逻辑。minimum_should_match 是布尔查询中一个重要的参数,用于指定至少应该匹配的子句数量。minimum_should_match 的值可以是一个具体的数字,也可以是一个百分比。它的具体含义取决于查询中的 should 子句的数量。当 minimum_should_match 是一个整数时,它表示至少需要匹配的 should 子句数量。
2023-05-09 12:53:49
4486
原创 第八章 查询和检索:Query DSL
支持通配符,但是这种方式不推荐,因为 mapping 不可变bool:可以组合多个查询条件,bool 查询也是采用 more_matches_is_better 的机制,因此满足 must 和 should 子句的文档将会合并起来计算分值bool query 多用于多条件组合查询。
2023-04-22 16:30:48
929
原创 Term Suggester 中 suggest_mode 的三种模式missing、popular、always 的区别
term suggester 正如其名,只基于 tokenizer 之后的单个 term 去匹配建议词,并不会考虑多个term之间的关系。
2023-04-20 10:27:19
831
原创 在 CentOS 7 中打开放指定或特定端口号
以上步骤可以帮助您在 CentOS 7 中开放指定端口号。注意,开放端口可能会增加服务器的安全风险,因此在进行端口开放时,务必只开放必要的端口,并遵循网络安全最佳实践。参数指定了要开放的端口号和协议(这里是。参数指定了防火墙区域,通常使用。参数表示将修改永久保存。
2023-04-18 10:48:25
4355
原创 Cron表达式
Cron表达式是一个用 6~7 个占位符表示的具有表述时间的表达式,一般用于执行定时任务或类似功能。其中x代表一个占位符,或称之为域。每两个占位符之间用空格隔开。{秒数} {分钟} {小时} {日期} {月份} {星期}{秒数} {分钟} {小时} {日期} {月份} {星期} {年份(非必填)}
2023-03-07 17:43:58
779
原创 第七章 分词器:Text Analysis
词项过滤器用来处理切词完成之后的词项,例如把大小写转换,删除停用词或同义词处理等。官方同样预置了很多词项过滤器,基本可以满足日常开发的需要。当然也是支持第三方也自行开发的。如果 ES 内置分词器无法满足需要,可以通过对切词器、词项过滤器、字符过滤器三个组件的自由组合来自定义分词器。Tokenizer:必须包含一个并且只能指定一个切词器,即必须指定分词器的切词规则。Token Filter:可以不指定词项过滤器,也可以指定多个词项过滤器。
2023-02-28 17:22:09
761
原创 ES 集群的健康值状态
绿色黄色红色新手误区:对不同健康状态下的可用性描述,集群不可用指的是集群状态为红色,无法提供完整读写服务,而不代表无法通过客户端远程连接和调用服务。
2023-02-17 10:34:12
1575
基于Java High Level Client的Elasticsearch客户端的常用操作代码
2022-04-17
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人