elasticsearch
文章平均质量分 89
醉鱼Java
这个人很懒,个人介绍就写了公众号《醉鱼Java》。
展开
-
深入解读 Elasticsearch 磁盘水位设置
到了这,还记得我们的问题吗,就是说 Elasticsearch 是怎么判定的磁盘超出设定的阈值的呢?左右,所以按照 Elasticsearch 的设定,ES 中分片应该是无法分配的。,可以看到,当前类中出现了两次,根据日志打印的其他信息不难发现,对于此处就是。是的你没猜错,通过这个位置你就可以知道是哪个方法调用的这,我们点一下。阈值时,对于新创建的索引主分片不影响,副本分片受影响;判断,相信就是这了,我的感觉来了,没想到这个找起来这么简单。行方法的开头打一个断点,重启之后,进入断点之后的值如下。原创 2024-03-10 22:50:11 · 1444 阅读 · 0 评论 -
深度解析:Elasticsearch写入请求处理流程
数量,对于有的索引,例如日志,每天、每周、每月的日志被单独存在一个索引上,老得索引一般都是只读的,也不太可能发生变化,所以我们就可以使用这个。提供所有还没有被刷到磁盘的操作的一个持久化记录。在 Elasticsearch 进行提交操作的时候,成本是非常高的,所以策略就是在写入到内存缓冲区的时候,同步写入一份数据到。数量太多,每一个都会造成文件句柄、内存、CPU的大量消耗,还有一个更重要的点就是,每个检索请求也会轮流检查每一个。最后送上一个我自己理解的图,参考了官网的描述,以及网上画的,如有错误欢迎指出。原创 2024-03-21 11:24:16 · 619 阅读 · 0 评论 -
深入理解Elasticsearch倒排索引
首先是索引的存储问题。随着文档数量的增加,搜索引擎需要处理的Term也会增加,而由于Term的组合可能会导致复杂的查询,因此搜索效率可能会受到一定的影响。在分析时,我们可以利用倒排索引统计单词出现的频率、单词出现的文档数量、文档的长度等信息,以便进行更精细的分析。倒排索引归并和优化:随着文本数据的增加和索引的更新,倒排索引会变得越来越大,这会导致索引的查询性能下降。另外,例如在音乐分类中,通过分析音频的频谱、节奏等特征,倒排索引可以生成每一个音乐的特征描述符,将音乐的特征描述符添加到索引中进行存储。原创 2023-04-16 16:48:05 · 546 阅读 · 0 评论 -
Elasticsearch中FST与前缀搜索
因此,前缀树可以用于前缀搜索,而且它只支持前缀搜索。具体来说,可以从FST的根节点开始,通过状态转移的方式遍历到所有以该前缀为前缀的字符串所对应的终止状态,并输出这些字符串。具体来说,可以从FST的根节点开始,依次遍历FST上的每个字符,并根据每个字符对应的转移边进入下一个状态,直到遍历完整个字符串。转移的添加和删除:在FST中,状态之间的连接称为转移,转移表示从一个状态到另一个状态的过程。输入符号表示当前状态到下一个状态的转移所需要的输入字符,输出符号表示该转移的输出字符,权重表示该转移的相对重要性。原创 2023-05-07 23:01:45 · 2664 阅读 · 1 评论 -
枯燥无味的Elasticsearch检索参数字典
2023年第一篇文章就这样水文了,拿出写了好久的《Elasticsearch查询请求时参数使用说明》水一次,懒惰了、兄弟们见谅,从发出来这篇文章开始,懒惰一去不回了兄弟们,让我们一起在新的一年更进一步。今年计划重心主要还是Elasticsearch与MySQL,如果你想补充一下其他方面的知识欢迎留言评论今天给大家带来的是Elasticsearch检索请求的最详细参数说明,把检索请求中经常用到的与不经常用的都展现出来,下面跟我一起来学习下吧环境macos10.14elasticsearch 8.1.3原创 2023-02-25 19:20:37 · 1585 阅读 · 1 评论 -
大文本的全文检索方案附件索引
总的来说,处理大文本时,需要综合考虑性能、资源利用、错误处理等方面的问题,合理设计和优化Pipeline的处理过程。在实际应用中,可以进行压力测试和性能测试,找到最合适的处理方案,确保系统能够稳定高效地处理大文本内容。处理文本内容可以在不影响检索功能的前提下,优化索引文档的大小,提高索引和检索的性能,并灵活地处理和扩展数据。通过上面两步的操作之后我们的测试环境就算搭建完成了,下面就可以进行大文本内容的读取测试了,首先我们还是准备几个测试的文本文件,比如。参数,将其设置为较小的值,限制保存的字符数。原创 2023-08-19 22:06:50 · 2683 阅读 · 0 评论 -
Elasticsearch Reroute API 的使用
该参数的意思就是,如果有该索引的副本分片存在(但是该分片是过时的,也就是说不是最新的副本分片),Elasticsearch 会将主分片分配给该副本分片,所以这个情况下会造成数据丢失。的主分片与副本文件同时离开,Elasticsearch 集群无法找到有效的分片充当主分片,所以分片会无法分配。该参数命令会为索引分配一个全新的空的主分片,相当于没有数据,也就造成数据丢失了,而且是完全丢失。使用如下命令获取索引分片分配情况,不加参数随机返回一个有问题的索引,加了参数就按照参数指定的来返回。原创 2023-12-22 10:48:25 · 741 阅读 · 0 评论 -
Elasticsearch Index Shard Allocation 索引分片分配策略
Elasticsearch 的集群在分配分片的时候,Elasticsearch 会尽可能的将单个索引的分片尽可能的分配在尽可能多的节点上,但是有时不是那么的均匀。通过上述的操作可以让我们尽可能的防止数据丢失,但是如果离开的节点很快就恢复那么这可能就是没有必要的操作了。如果当前离开的节点上有主分片,会将其它的副本分片提升为主分片以替换该节点上的主分片;可以看到,有分片是没有进行分配的,所以这也是修改分片分配策略时需要特别注意的一点。如果延迟分配超时,主节点会将丢失的分片分配给另一个节点,该节点将开始恢复。原创 2024-01-19 11:12:28 · 653 阅读 · 0 评论 -
Elasticsearch算分优化方案之rescore_query
es的重新评分,即在检索出来一次结果的基础上在进行检索提升数据排序效果,但是仅对查询或者post_filter阶段返回的前多少条进行二次查询。它可以根据特定的需求和业务规则,对原始查询结果进行二次排序,以提高最相关的文档的排名。我们可以对检索结果进行二次评分,增加自己更复杂的评分逻辑,提供更准确的结果排序,但是相应的也会增加查询的计算成本与响应时间。是一种用于改进搜索结果排序的查询,可以根据不同的规则和需求重新计算得分并重新排序搜索结果,以提高搜索准确性和实用性。是一种用于改进搜索结果排序的查询。原创 2023-08-22 23:14:21 · 1079 阅读 · 0 评论 -
一篇文章让你学会Elasticsearch中的查询
综上所述,Filter适用于需要精确匹配和高性能的查询场景,而Query适用于需要全文搜索、排序和评分的场景。:Query提供了更多的查询选项和查询语法,可以进行复杂的查询操作,包括布尔逻辑、范围查询、模糊查询等。:根据指定字段的值进行分组,并按照指定的间隔计算每个分组的文档数量。:根据指定字段的值进行分组,并计算每个分组的文档数量。参数的取值会影响文档得分和排名的计算方式,需要根据具体的需求来选择合适的取值。原创 2023-07-16 21:44:59 · 208 阅读 · 0 评论 -
科普一下Elasticsearch中BM25算法的使用
与BM25算法相比,TF-IDF算法没有考虑文档长度和查询长度的影响,因此在处理长文档和短查询时可能会出现评分偏低的问题。在Elasticsearch中,BM25是一种常用的文本相似度评分算法,用于计算查询和文档之间的相关性。BM25算法的核心思想是根据查询词项在文档中出现的频率和文档中的词汇分布来计算文档的相关性。BM25(Best Match 25):BM25是一种基于TF和IDF的改进算法,它考虑了词频和文档频率,并引入了一些调整参数,以提高搜索结果的质量。较短的字段可能更相关,因此分数较高。原创 2023-07-16 21:47:29 · 2185 阅读 · 0 评论 -
Elasticsearch 外部词库文件更新
Elasticsearch 使用外部词库文件配置IK实现自定义分词,动态更新词库,实现热更新分词逻辑原创 2023-11-12 11:55:50 · 1271 阅读 · 0 评论 -
Elasticsearch中查询性能优化
需要读取多个小块进行查询时,它并不会一次性将所有的小块全部加入内存中,而是采用分批读取的方式,以避免内存不足的情况发生。会首先从磁盘中读取一部分小块到内存中,以进行排序、过滤和组合等操作,然后将处理过的结果再与后面的小块进行组合。会从磁盘中读取这些小块,并在内存中对它们进行排序、过滤和组合,然后返回查询结果。中,文本内容被拆分成多个小块并不是保存在磁盘中的,而是保存在内存中的。无法将整个文本读入到内存中,因此会将文本拆分为多个小块,并将它们存储在磁盘上的多个。文档,可以通过分片和文档段来存储和管理。原创 2023-07-16 21:45:32 · 1012 阅读 · 0 评论 -
如何优化因为高亮造成的大文本(大字段)检索缓慢问题
字段是读取的大文本内容,所以后果就是索引的单个字段很大,造成单独检索请求的时候速度还可以,但是加入高亮之后检索请求的耗时就非常的慢了。的策略,为了在检索的字段中创建出一个有意义的高亮片段,高亮器会使用原始文本的开始和结束字符串的偏移量,偏移量的获取可以从一下方式获得。数据量少的时候对比不是特别明显,所以在测试时,可以在索引中添加大量的测试数据进行测试,本人在测试过程中es的索引大小在。通过上面的查询请求中高亮参数的指定可以发现,高亮器还是支持其他的参数的,那么我们下面将对几个常用的参数进行说明。原创 2023-08-23 08:04:36 · 929 阅读 · 0 评论 -
聚合在Elasticsearch中的使用及示例验证
例如,我们可以先按分类分组,然后在每个分类内再按制造商进行分组,并计算每个分类下的平均价格。词条聚合是一种用于对文本字段进行分组的聚合方式,它会将相同值的文档分到同一个桶(Bucket)中,并计算每个桶中文档的数量。范围聚合允许我们根据指定的范围条件将文档分组,例如:按价格范围进行分组并统计每个价格范围内的商品数量。字段)创建一个价格区间的直方图,将商品按照价格范围进行分组,并统计每个价格区间内的商品数量。的日期字段,我们可以进行日期直方图聚合,按照日期进行分组并统计每个时间段内的文档数量。原创 2023-08-02 21:04:18 · 964 阅读 · 0 评论 -
Elasticsearch跨集群检索配置
跨集群检索字面意思,同一个检索语句,可以检索到多个ES集群中的数据,ES集群默认是支持跨集群检索的,只需要动态的增加入节点即可,下面跟我一起来体验下ES的跨集群检索的魅力。基础的跨集群配置与检索就到此, 实际的使用中查询语句的条件等各个方法都会有限制,这个需要根据实际使用场景来进行修改了,反正现在怎么操作你会了,比着葫芦画瓢还不简单吗。每个集群独立执行搜索请求。1、向本地集群中发送跨集群检索请求,该集群中的协调节点接收并解析请求。1、向本地集群中发送跨集群检索请求,该集群中的协调节点接收并解析请求。原创 2023-10-28 17:19:16 · 473 阅读 · 0 评论 -
异步检索在 Elasticsearch 中的理论与实践
在传统的同步搜索中,当客户端发出一个查询请求后,它需要等待 Elasticsearch 返回所有匹配结果才能继续处理其他任务。异步检索是 Elasticsearch 中一个强大且实用的特性,可以显著提高搜索和查询操作的性能,特别在处理大规模数据或复杂查询时。在 Elasticsearch 中,使用异步检索需要创建一个异步搜索任务。异步检索的优点在于它能够显著提高搜索和查询操作的性能和响应时间,特别是在处理大量数据或复杂查询时。的索引提交了一个异步搜索请求,该请求使用简单的匹配查询来查找包含特定值的文档。原创 2023-07-31 21:50:01 · 1206 阅读 · 1 评论 -
深入了解 Elasticsearch 8.1 中的 Script 使用
如果我们还想操作当前解析的数据我们可以使用运行时字段,因为运行时字段不需要进行索引会更加的灵活,可以很方便的修改脚本及运行方式。所谓的解析字符串,只是一组固定格式的字符串,提前使用变量的形式编译,在插入文档时,通过脚本进行解析保存,方便后面的检索等请求。后面有机会会出现一片使用Java编译脚本的使用,等后面时间吧,最近这段时间听尴尬的,也托更很久了,以后慢慢的都要补上。上面我们是在检索请求中使用的脚本字段来使用的脚本,下面我们先内置一个脚本,通过使用。中,可以用于查询、聚合、脚本字段、脚本排序等各种用例。原创 2023-10-28 17:12:01 · 2149 阅读 · 0 评论 -
Elasticsearch Data Stream 数据流使用
本文是《Elasticsearch索引生命周期管理ILM》中数据流索引补充篇,文章地址如下:https://mp.weixin.qq.com/s/ajhFp-xBU1dJm8a1dDdRQQ并且在另一片Elasticsearch的进阶使用-动态模版中也提到了相关数据流索引的内容,有兴趣的可以回过头看一下,地址我也放下面https://mp.weixin.qq.com/s/C22Zm514qq0gN7BNcnbzCQ所以本文着重介绍下数据流索引的使用数据流数据流可以跨多个索引存储时间序列数原创 2022-12-06 20:08:38 · 1159 阅读 · 0 评论 -
索引生命周期管理ILM看完不懂你锤我
阅读完本文你可以学到什么是索引生命周期管理,各个阶段可以做的操作以及如何使用索引模版使用索引生命周期策略,下面就跟我一起来吧基础理论篇索引生命周期管理(ILM)是一种可以让我们随着时间推移自动化的管理索引的一种方式。我们可以根据性能,索引文档数量、大小等弹性要求,文档的保留需求等方面来自定义索引生命周期管理策略,我们可以使用ILM实现如下需求当索引达到一定的大小或者一定的文档数量时生成一个新的索引每天、每周或者每个月创建一个新索引、并把之前的索引归档删除历史索引、按照数据保留标准执行是否保留索引原创 2022-11-25 20:55:11 · 3187 阅读 · 6 评论 -
spring-boot-starter-data-elasticsearch es带x-pack后台配置
pom配置<repositories> <repository> <id>elasticsearch-releases</id> <url>https://artifacts.elastic.co/maven</url> <rele...原创 2019-08-29 16:22:57 · 1414 阅读 · 0 评论 -
springboot整合后台框架(三)整合elasticsearch
最近在学习es,起码要先有个es环境吧,然后再是整合到代码中使用一下,毕竟只有实践才会有深刻的记忆,这就是所谓的经验啊,下面开始吧,本文分两部分,第一部分配置es环境,第二部分整合到springboot中进行简单的操作,本人也是初次学习,如有错误欢迎指出修正,本文示例代码不严谨,仅供参考一、 docker 安装es1、 拉取镜像# 搜索镜像docker search elasticsea...原创 2019-07-24 09:13:20 · 421 阅读 · 0 评论 -
Elasticsearch拆分索引知多少
原文链接:indices-split-index API环境Elasticsearch 7.13Mac 10.14.6概述拆分索引API允许将现有索引拆分为新索引,其中每个原始的主分片被拆分为新索引中的两个或者多个主分片索引可以拆分的次数(以及每个原始的主分片可以拆分成的分片数量)由index.number_of_routing_shards设置。路由分片的数量指定使用的hash空间,该空间内部使用一致性hash在分片之间分发文档。例如,一个5个分片的索引,其中number_of_routing原创 2022-07-24 23:32:52 · 788 阅读 · 0 评论 -
Elasticsearch创建一个索引怎么也这么复杂
ES(8.1)认证考题大纲参考如下https://mp.weixin.qq.com/s/x7lMmMAo2563JysMJ8vgRQ今天是我们学习ES8.1官方搜索工程师的第一课,首先第一个问题就是根据给定的需求创建一个索引,本篇文章将采用如下(总分总)的形式分析该题目,第一部分先进行考题的分析,猜测要考的知识点大概有什么,然后第二部分对该题目涉及的知识点进行分析讲解,每一个考点后都跟着简单的解读,最后模拟汇总该考题,最终实现熟练掌握该题目。后续本类型文章如不特殊说明均使用该种方式进行讲解,如果有好的建议原创 2022-10-13 23:23:18 · 936 阅读 · 0 评论 -
万字长文:一文彻底搞懂Elasticsearch中Geo数据类型查询、聚合、排序
在我们使用elasticsearch创建索引时,经常会遇到一种字段类型为geo_point的数据类型,该类型的字段接收经纬度的值,那么geo_point类型的字段可以用来做什么?基于Geo的地理位置范围查询基于Geo范围内到中心点距离的聚合统计加入到相关性得分计算中基于Geo地理位置信息到中心点距离的排序通过阅读本文,可以学到以上知识点,学到就是赚到,还不快快开始阅读吧环境MacOS 10.14.6Elasticsearch 8.1Kibana 8.1帮助信息latitude: 纬度;lo原创 2022-08-30 22:44:14 · 2612 阅读 · 0 评论 -
Elasticsearch redis netty 报错
报错如下Caused by: java.lang.IllegalStateException: availableProcessors is already set to [12], rejecting [12]项目中引用了elasticsearch 和redis 此时加入配置即可解决@SpringBootConfigurationpublic class ElasticConfig { @PostConstruct void init() { Sys.原创 2020-07-07 17:29:08 · 769 阅读 · 0 评论 -
Elasticsearch进阶使用-动态模版
总进度Elasticsearch 8.1 认证工程师学习路线今天我们来学习Elasticsearch中的动态模版,其实我们在第一课2.2.3章节中就已经学过了类似的了,链接如下根据给定的需求创建索引但是今天咱们学点不一样的,上次只是简单的使用,这次咱要深入理解,完美掌控才是第一目标,废话少说,下面开始什么是动态模版动态模版允许我们控制动态字段映射规则之外的数据动态字段的映射我们可以设置dynamic参数为true或者runtime来启用动态映射,也可以自定义动态映射模版自定义映射,自定义之后的原创 2022-11-06 22:06:53 · 1235 阅读 · 0 评论 -
Elasticsearch创建一个索引怎么也这么复杂
ES(8.1)认证考题大纲参考如下https://mp.weixin.qq.com/s/x7lMmMAo2563JysMJ8vgRQ今天是我们学习ES8.1官方搜索工程师的第一课,首先第一个问题就是根据给定的需求创建一个索引,本篇文章将采用如下(总分总)的形式分析该题目,第一部分先进行考题的分析,猜测要考的知识点大概有什么,然后第二部分对该题目涉及的知识点进行分析讲解,每一个考点后都跟着简单的解读,最后模拟汇总该考题,最终实现熟练掌握该题目。后续本类型文章如不特殊说明均使用该种方式进行讲解,如果有好的建原创 2022-10-13 23:29:35 · 834 阅读 · 0 评论 -
Join字段类型超容易上手的好吧(Elasticsearch)
最近因为工作原因吗,比较忙,然后个人也比较懒,输出又慢下来了,后面会慢慢恢复的,定期保证周更吧,并且保证质量输出。阅读本文需要一定的Elasticsearch基础哦,本文深度有,但是不深概述Elasticsearch中Join数据类型的字段相信大家也都用过,也就是口中常谈的父子文档。在Elasticsearch中Join不能跨索引和分片,所以保存文档信息时要保证父子文档使用相同的路由参数来保证父文档与子文档保存在同一个索引的同一个分片,那么都有哪些限制呢?父子关系的限制每个索引中只能有一个关系字原创 2022-09-15 23:49:43 · 745 阅读 · 0 评论 -
Elasticsearch 字段别名 field-alias
环境Elasticsearch 8.1Kibana 8.1MacOS 10.14.6简介首先我们还是先了解一下,什么是字段别名?大家可能听说过索引别名,通过索引的别名可以轻松的切换所需的数据来源与哪一个索引,那么什么是字段别名呢?所谓字段别名,就是索引mapping定义时的备用字段,通过字段别名可以替换搜索请求中的目标字段,字段别名可以用于搜索,排序,聚合,高亮,docvalue_fields,stored_fields,suggestions,下面我们一起来看一下字段别名的详细使用过程使用定义原创 2022-08-15 23:50:20 · 1844 阅读 · 0 评论 -
Elasticsearch 聚合字段aggregate-metric-double
https://www.elastic.co/guide/en/elasticsearch/reference/8.1/aggregate-metric-double.html环境信息Elasticsearch 8.1Kibana 8.1MacOS 10.14.6描述今天我们学习一下Elasticsearch的聚合字段类型,所谓聚合字段类型,类型设置为aggregate_metric_double作为一个对象,子字段可以有min,max,sum,value_count,当我们对字段设置为agg.原创 2022-08-14 21:50:26 · 669 阅读 · 0 评论 -
elasticsearch8.1源码编译笔记
环境idea 2022.1.3jdk17macos 10.14.6gradle 7.4.2(代码自动下载)前置准备idea 设置JDK17idea 设置gradle JVM为Project JVMgradle 设置aliyun加速(可选),有时设置了不如不设置更好开始导入导入项目使用 idea open项目下的build.gradle,等待编译结束编译8.1版本的发行包这一步会下载所需的依赖jdk,如果报错可以多尝试几次,或者切换网络,执行该命令时,注意终端jdk环境./gradlew原创 2022-09-21 20:11:11 · 1143 阅读 · 0 评论 -
Elasticsearch 如何实现索引的伪·命名空间
环境说明 jdk8 elasticsearch7.4.0 springboot 2.3.12.RELEASE spring-data-elasticsearch 4.0.9.RELEASE 注:本文不做特殊说明的情况下,client1与client2使用相同配置应用场景在公司内部资源紧张的情况下,多个项目使用同一个elasticsearch并且数据互不干扰,实现资源的最大化利用,节约成本集成Elasticsearchpom(client1与clie原创 2022-04-08 21:44:36 · 1850 阅读 · 0 评论 -
Elasticsearch7.4源码编译记录
Elasticsearch 7.4.3 源码编译记录 建议:不要使用本机装的gradle,编译时会自动下载匹配版本的gradle 环境 Macos 10.4 idea 2019 jdk12 elasticsearch7.4 代码 编译过程 1、克隆代码 https://github.com/elastic/elasticsearch/tree/7.4 2、编译idea,这一步会自动下载对应版本的gradle,需要设置好java版本为jdk原创 2022-03-21 22:14:53 · 2136 阅读 · 0 评论 -
Elasticsearch 6.5源码编译最新版
6.5源码编译启动安装教程这里就不写了,百度下怎么安装就行版本我这安装的最新版配置阿里云加速,找到安装的根目录,我这里是 /Users/cxt,在 mac 上就波浪线的目录,自己根据自己系统找到 gradle 安装目录即可创建 init.gradlecd /Users/cxt# 此目录下有个隐藏文件夹gradle,注意小数点cd .gradlevim init.gradleinit.gradle 内容如下allprojects{ repositories {原创 2021-04-03 21:42:16 · 287 阅读 · 0 评论 -
Elasticsearch+IK+pinyin自定义分词器
本文环境elasticsearch 7.4.0ik 7.4.0pinyin 7.4.0安装ik分词器IK分词器链接下载 elasticsearch-analysis-ik-7.4.0.zip在es对应的plugins文件夹下面新建ik文件夹解压zip到ik文件夹 unzip elasticsearch-analysis-ik-7.4.0.zip -d plugins/ik安装pinyin分词器拼音分词器链接下载 elasticsearch-analysis-piny原创 2020-07-30 20:04:50 · 1534 阅读 · 0 评论 -
Elasticsearch update_by_query 语句使用记录
使用如下POST 索引/索引类型/_update_by_query{ "script": { "source": "ctx._source['修改的字段名'] = '修改后的值'" }, "query": { "bool": { "must": [ { "term": { "查询条件此处为字段名": "字段的值" } } ], "must_n原创 2020-07-15 17:36:41 · 983 阅读 · 0 评论