- 博客(734)
- 收藏
- 关注
原创 java.io.IOException: entity content is too long [xxx] for the configured buffer limit [1048576]
java 使用 es hight-level-client 连接集群 ,滚动导出数据报错。但是我不想批量太小,影响处理速度。解决方案2:自定义一个 requestOptions。:response内容太大。buffer装不下了。,我的是滚动导出数据,可以调小批量的大小。
2023-06-05 17:24:23
339
原创 白话ES搜索相关性问题
之前使用es,更多的是使用term查询,和agg聚合分析。对相关性关注较少。实际上es擅长的是做模糊搜索,相关性搜索。ES是一个开源的通用的检索工具,能满足百分之八十的需求。相关性这个问题,是一个非常有意思的问题,值得深思。搞清楚相关性打分规则,有利于提高召回内容的相关性。深入了解以后,能帮我们解决剩下的百分之二十的需求。
2023-06-05 01:53:47
986
原创 如何处理亿级图片排重(精准排重,相似排重)
图片相似度对比1、需求假如有一个图片池,存有1亿图片。给一张目标图片,在图片池中做匹配。判断一张图片是否在图片池中出现过。(完全一样)判断有没有相似的出现过。比如两张图相似度90,两张图片是在描述一件事情。2、需求实现方案对于以上需求,实现思路是:将图片转成向量,存放在ES中,去做以图搜图。但是在ES中的实现以图搜图,是用KNN实现的。KNN总会返回topN结果,在图片池中,哪怕真的不存在与目标一致的图片,但是仍然会返回与之最相似的图片。想要使用ES实现需求1很容易。
2023-06-02 13:30:39
1056
原创 Exception in thread “main“ java.lang.UnsatisfiedLinkError: no opencv_java455 in java.library.path:
java 中使用 openCV,报错Exception in thread "main" java.lang.UnsatisfiedLinkError: no opencv_java455 in java.library.path:
2023-06-02 13:08:28
655
原创 ChatGPT 学习 ES & lucene 底层写入原理,源码
再也不用发愁不知道如何看 es底层写入原理了。我让chatGPT列出来了lucene的相关源码。并进行了解析。
2023-04-10 08:33:27
747
原创 ES forceMerge 强制段合并为什么会提升检索性能?
时间已经过去了许久,对检索的原理,对es集群的理解也有了更高的层次。再写一篇文章,来讲讲为什么会性能提升。讲讲段合并的适用场景,以及需要注意的事项。用的好了性能提升很多,用的不好,性能反而降低很多。
2023-04-09 10:56:46
594
原创 借助chatGPT强大的源码理解能力,来快速学习elasticsearch 7.11.1整体源码结构(用chatGPT学源码太香了)
当下,全文搜索引擎 Elasticsearch 在企业应用领域中越来越受欢迎。Elasticsearch 的内部实现采用了模块化的设计,其中不同的功能模块被组织到不同的包中。在本文中,我们将深入探讨 Elasticsearch 7.11.1 版本中每个包的主要内容和功能,以便更好地了解 Elasticsearch 的内部实现。这篇文章是我和chatGPT的聊天记录,可以看看chatGPT是如何给我讲源码的。也可以看看我是如何一步一步的引导chatGPT回答出更完美的答案的。讲真的,用chatGPT学源码太香
2023-04-02 11:25:53
3328
4
原创 让chatGPT当我的老师如何? 通过和chatGPT交互式学习,了解在ES中,一条JSON数据是如何写到磁盘上的
最近一直有一个问题,如鲠在喉。争取早一天解决,早一天踏踏实实的睡觉。 问题是:在ES中,一条JSON数据是如何写入到磁盘上的? 如何解决这个问题?我想到了chatGPT,还有lucene的学习资料。这篇文章,我打算用 QA的形式来分享这次学习探索过程,看看能否驯服chatGPT当我的老师。 文章我copy了我和chatGPT的聊天记录。 最后的结果还是挺不错的,虽然也有一些问题,但是大多数是对的。并且chatGPT也给列出来了ES中这部分源码的实现位置,只需要再花时间看看源码。
2023-04-01 18:17:30
9901
10
转载 全链路日志收集追踪方案 - 美团
一套非传统的基于 log_agent + Kafka + Flink + HBase的日志上报和存储架构能够很好地支持复杂的业务系统,天然支持分布式场景下众多应用的日志上报,同时适用于高流量的数据写入
2023-04-01 13:09:19
268
原创 美团 Elasticsearch 特定场景内核级改造优化分享
跟我一起学习,美团是如何对ES内核的 倒排链构建和合并做优化的。美团将构建倒排倒排链的过程提升了60倍,将倒排链合并的过程合提升了百倍。 这对搜索很多个关键词的场景,提供了一个内核改造的思路。 .
2023-04-01 10:53:56
488
原创 ES indexSort 原理源码解析
在上一篇文章中,是我对es indexSort的优化对检索性能提升的测试。测试结论是:好的情况下,会有50%的性能提升效果。这让我对它是如何做到的,产生了浓烈的兴趣。 在这篇文章中,结合源码对原理进行一个解析
2023-04-01 09:39:04
274
原创 ES 搜索优化测试 - indexSort 对检索性能提升50%
indexSort 是在写入数据的时候,根据某个字段做排序。我们可以理解为数据的预排序。在检索的时候,假如搜索正好是根据排好序的字段做排序的,那么将会有50%的检索性能提升效果。注意,不要在请求中返回 count数据总量。这样配合indexSort预排序,可以提前终止请求。提升效果在数据量非常大情况下,会非常明显!原理是触发了es的提前终止计算请求的机制。
2023-03-26 09:31:24
641
原创 ElasticSearch Query_string + match_phrase 在千亿级检索中的思考
在舆情分析的应用场景中,数据规模通常在千亿以上。使用Elasticsearch 去构建搜索引擎,做相关的分析,面临着非常多的挑战。 先介绍一下,在舆情分析场景中,要用到的是 match phrase语法,针对文章做精准的句子匹配! 在这篇文章中,我会先讲一下我们面临的挑战;接着我会带着问题,分析一下 match phrase语法的检索过程;根据检索原理,考虑可以做哪些优化;以及针对我们面临的挑战,我的一些优化方法。
2023-03-20 01:27:19
501
转载 linux负载(load)问题详解 + 压测命令集
本文详解linux中的CPU负载问题,以及结合生产中的问题进行分析。并且提供了对应的压测命令,来复现生产环境中遇到的各种与CPU相关的问题!
2023-03-13 01:25:23
787
原创 Elasticsearch 集群规划- 单台机器核心数计算公式
在做集群规划的时候,到底需要给集群的每个节点多少个核心数?这个问题一直困扰了我很久。最近一段时间做千亿数据,PB存储量集群规划的时候,突然想明白了这件事,大致可以用一个公式来计算! 我觉得这是一个非常重要的问题,非常值得重视。其实所谓的集群规划,无非就是根据数据量评估出需要的es节点数,每个节点应该需要多少的CPU,多少的磁盘,多少内存。
2023-03-08 08:35:56
617
原创 springBoot JPA代码生成器
通过IDEA+配置文件,根据数据库表结构快速生产Service、ServiceImpl、repository、repositoryImpl、自动生成常用的jpa增删改查等方法。大佬的帖子: Spring Boot JPA idea代码自动生成 其二。配置文件内容替换我的: Generate POJOs.groovy。7.所生产出来的java文件。我都上传,大家可以去看看。先前参考简书上的帖子,后经自己改良的配置生成。此时会让你选择要生成的保存目录。使用idea 生成代码步骤。
2023-02-16 13:08:40
660
1
原创 Lucene的代码目录结构
analysis模块主要负责词法分析及语言处理而形成Term。codecs模块主要负责之前提到的一些数据结构的实现,和一些编码压缩算法。包括skiplist,docvalue等。document模块主要包括了lucene各类数据类型的定义实现。index模块主要负责索引的创建,里面有IndexWriter。store模块主要负责索引的读写。search模块主要负责对索引的搜索。geo模块主要为geo查询相关的类实现util模块是bkd,fst等数据结构实现。
2022-10-01 13:30:00
515
2
原创 Es底层查询原理、数据结构、及性能分析
es 提供了非常强大而且易用的查询和分析能力,包括全文索引、模糊查询、多条件组合查询、地理位置查询等等,而且具有一定的分析聚合能力。因为其查询场景非常丰富,所以如果泛泛的分析其查询性能是一个非常复杂的事情,而且除了场景之外,还有很多影响因素,包括机型、参数配置、集群规模等等。本文主要是针对几种主要的查询场景,从查询原理的角度分析这个场景下的查询开销,并给出一个大概的性能数字,供大家参考Es是一个分布式外壳,实际上执行数据处理的是lucene。es的底层就是lucene。
2022-10-01 10:05:10
4819
4
原创 ES千亿级搜索实战-架构优化
不管什么数据库,在应对千亿级别以上的数据的实时检索场景,都会有一定的压力。ES是搜索引擎,优秀的设计理念能够提速,但是也会表现的力不从心。往往会出现,集群随着数据越来愈多,而变得越来越慢。通常数据在来到10亿,对于命中两三亿结果集的时候,搜索时间都到了5秒以上。在百亿的搜索场景下,效果更差,可能在10秒以上。来到千亿级别,效果就更差了,可能来到了几十秒。
2022-09-27 23:44:27
2939
原创 ES千亿级数据检索实战-搜索优化建议
本篇文章,提供Es搜索优化的思路,优化方向,不做过多的细节赘述。目前负责千亿级别的索引的搜索优化。以下内容,是我个人做es搜索的经验。这些内容是官网上看不到的东西。
2022-09-25 13:38:58
3837
原创 为什么要使用elasticsearch
起初最早接触es的时候,是听老师傅说:“es无所不能”。 也正是因为这句话,让我对es有了很强的好奇心。后边开始接触他,做10亿数据场景的搜索,做优化。再后来去看源码,然后有机会在es源码中做修改,添加功能。然后又接触2000亿数据级别的搜索,以及优化。 下边我来谈谈es不可抗拒的优势,以及如何做到无所不能。
2022-09-25 13:18:35
2450
原创 ES优化实战-通过开启copy_to提升一倍的检索性能
在对text字段进行搜索的时候,假如你需要对多个text类型的字段搜索,例如 文章的标题和文章的内容,这两个字段。 在这种情况下,是可以开启copy_to来提速的。我测试的提速效果在百分之五十左右。 它是将这两个字段copy到一个字段上,然后进行分词处理。之所以会快,就是因为如果你多个字段,要做多次的查询,如果合并到一个字段上,只需要做一次查询。 但是请注意,它会额外花费比较多的磁盘资源!
2022-09-25 13:06:36
1176
原创 ES优化实战 - 小操作节省百分之三十以上的磁盘空间
un_source 是去掉存储的数据。在查询的时候,不反回数据。数据只做索引和倒排这些。这样做的意思是,只让es做检索,不做存储。es检索完,只返回一个id。然后选用Hbase这样的数据库联动。Hbase擅长的是根据key来取值,花费的是磁盘。不占太多其它资源。
2022-09-25 12:10:29
1360
原创 ES优化实战- forceMerge搜索提升测试报告
对于历史不变的数据,段合并的效果是非常好的。它对普通查询(query_string)有着较大的提升,提升在10%~90%不等的效果,其中搜索条件命中的结果集越多,提升就越明显。段合并对聚合分析的提升也是较大的,提升在10%~80%,这是一个非常大的提升,例如聚合从16s到了3s。
2022-09-25 11:55:43
1033
原创 ES千亿级检索实战 堆OOM 问题深度分析
在特大规模的索引中检索,通常一次检索涉及到的分片数达到2000个左右。加上跨集检索,堆有非常大的压力,OOM的问题经常发生。本篇文章,对线上环境的堆进行深度分析,看看都有什么。 我使用prifile来分析查看堆快照。并结合目前我对es底层的了解,来分析堆中都有什么。
2022-09-25 11:00:14
1316
原创 es 官方诊断工具
官方给我们提供的工具,能够给我们输出一些有用的监控数据,包括了机器的CPU、磁盘的IO、网络的情况、JVM情况、线程池、分片、磁盘使用情况、索引情况等等。上边是官方文档,有指导如何使用它来给我们的es做一个健康检查(体检)。我看网上的文章也是翻译官方文档。个人觉得还是直接看官网更好一些。美中不足的是,是这些指标数据,只是一堆指标数据。需要一些懂这些指标数据的人,来研判它,才能得出结果。看出es集群都有哪些问题。希望以后能有时间,和这个诊断工具结合做一个es指标的研判工具,能够得出结论性的内容。...
2022-08-02 11:00:00
499
原创 如何ES源码中添加一个自己的API 流程梳理
如何自己在es源码上做二次开发,添加新功能?而API应该如何添加呢?es的调用链路比较复杂,它不是简单的MVC结构。
2022-08-01 15:45:03
687
原创 es DELETE index 源码分析
elasticsearch源码解析。本文所写内容为实战经验,是我一步一步断点调试出来的结论。因为我们有一个更高的需求,需要去改它的源码。所以必须确保每一步都是正确的!
2022-08-01 15:12:06
1147
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人