elasticsearch
文章平均质量分 67
zmc@
please once again
展开
-
ES7.5.2 script_score查询的bug
背景1.需要用到dense_vector +script_score来进行算分 --- 排序2.ES版本为7.5.2,用到了自定义的插件,短期无法升级到7.17.5(或更高版本)3.script_score查询在加入date类型的字段作为查询条件时,出现NPE异常原创 2023-05-31 16:09:45 · 606 阅读 · 0 评论 -
ES执行查询时单节点存在多分片,是否会合并查询
同一个索引的多个分片分配在了一个ES节点上,当一次查询需要查找的分片中有多个分片在一个节点上,该ES节点是否会合并查询,使用单个线程查询多个分片?原创 2023-02-14 17:08:27 · 921 阅读 · 1 评论 -
Elasticsearch版本升级实践、注意事项
从官方文档看可以发现两个大版本升级需要关注到具体的版本,比如想从 5.x 版本升级到 7.x 版本,就必须先升级到 6.8 版本,再从 6.8 升级到 7.x 版本。1. API检查是否可以升级,不能则先改造2. 升级ES集群(此时依然使用6.8客户端,兼容访问6.8/7.17集群)3. 重建索引(去掉type)4. 修改客户端代码 & 升级客户端版本到 7.17原创 2022-12-15 14:02:13 · 3404 阅读 · 0 评论 -
ES7.5升级7.17后在写多读少场景下CPU、IO飙升
ES PAAS管理的集群升级了100+,从7.5升级到7.17 (保证每个大版本最终仅维护一个小版本集群),由于业务使用差异大,也出了不少问题,前面的文章也有提到过Integer类型字段使用terms查询效率低的情况...原创 2022-09-29 22:24:26 · 2173 阅读 · 0 评论 -
ES7.17版本terms查询性能问题
ES迭代过程支持了越来越多特性与优化,版本升级显得十分必要。测试又很难覆盖所有场景,灰度升级过程中难免遇到一些问题,这里主要分析terms查询的一个性能损失问题。原创 2022-09-23 10:21:24 · 2187 阅读 · 0 评论 -
一个迷惑性很高的生产故障-Elasticsearch日志rotate导致节点CPU激增
Elasticsearch CPU很高的场景很常见,优化读写以及扩容即可解决问题。 如果只有一个节点CPU高,那可能的情况就比较多了,节点机器异常?读写不均匀?GC过高?forcemerge? 这里描述一个极具迷惑性的case。...原创 2022-07-23 03:36:21 · 1757 阅读 · 0 评论 -
Elasticsearch容器化后pod出现throttle的情况
Elasticsearch容器化后,节点所在pod偶发CPU throttle的情况。原创 2022-07-14 23:20:18 · 1382 阅读 · 0 评论 -
Elasticsearch出现401异常?业务并没有受到影响?
401表示鉴权失败,正常情况下,鉴权失败表示用户名密码信息异常。但是某些场景下,ES 的 Gateway中收到了401的响应,但是业务很正常...原创 2022-06-29 13:04:02 · 2091 阅读 · 0 评论 -
Elasticsearch8.2扩容挪数据master出现异常
Elasticsearch8.2扩容,exclude是一个基本操作。生产过程中操作的时候出现故障,master节点出现异常,产生的现象和脑裂类似...原创 2022-06-29 11:23:24 · 998 阅读 · 0 评论 -
Elasticsearch8.2 使用snapshot备份能力
Elasticsearch8版本相较于之前版本参数和使用层面有了较多改动,但基本使用方式是一致的; 本文将介绍ES8版本如何在云环境中设计snapshot备份存储方案;原创 2022-06-25 11:32:44 · 1245 阅读 · 0 评论 -
ES7安装hanlp插件出现AccessControlException: access denied (“java.io.FilePermission“ “data/dictionary/Core.
ES7安装hanlp插件出现AccessControlException: access denied ("java.io.FilePermission" "data/dictionary/CoreNatureDictionary.tr.txt" "read")原创 2022-06-11 00:31:07 · 1575 阅读 · 0 评论 -
【分析】segments的version_map_memory指标具体表示什么?
ES有很多的监控指标,其中有一些指标官方解释的实在模糊。比如version_map_memory:(byte units) Total amount of memory used by all version maps across all shards assigned to selected nodes.官方解释Cluster stats API | Elasticsearch Guide [7.16] | Elastic全文:【分析】segments的version_map原创 2022-01-27 16:15:53 · 1421 阅读 · 0 评论 -
ES recovery、主副分片复制会有一段时间block写入?
先说结论:1.ES在主副本分片复制时候不会block写入(version > 2.x)2.ES在recovery主分片时候会有一段时间block写入全文:ES recovery、主副分片复制会有一段时间block写入?-阿里云开发者社区ES在主副本分片复制时候不会block写入(version > 2.x)ES在recovery主分片时候会有一段时间block写入https://developer.aliyun.com/article/861614?spm=a2c6h.131原创 2022-01-26 18:53:12 · 1533 阅读 · 0 评论 -
【离线】esrally实践总结
简介:1.真正的离线安装esrally2.术语介绍,官方数据集、track介绍3.官方数据集下载4.离线使用esrally测试现有ES测试集群5.对比两次race(测试)的结果6.测试时间太长怎么办?7.报告分析全文:【离线】esrally实践总结https://developer.aliyun.com/article/851848?spm=a2c6h.13262185.0.0.7baa709dE62k1c...原创 2022-01-24 22:51:08 · 689 阅读 · 0 评论 -
ES写入毛刺问题?从原理到调优
简介:ES是一个非常完善的搜索引擎,可以用于业务搜索、数据分析,其周边生态产品也十分丰富;正是由于ES的完善与通用性,用户使用ES的场景越来越多样化,通用的配置已经无法达到用户的稳定性需求,并且难以给出通用的最佳实践,需要专门的为某些场景进行调优。例如,update频繁的场景下的性能调优。全文:ES写入毛刺问题?从原理到调优https://developer.aliyun.com/article/860225?spm=a2c6h.13148508.0.0.23f54f0e8FEuhO.原创 2022-01-24 22:48:36 · 1844 阅读 · 0 评论 -
Elasticsearch插件开发与调试
背景:elasticsearch version :6.8.5插件开发类型:elasticsearch 变更数据记录插件开发略(完善后开源)插件debug(远程debug)1.准备发行版的ES(下载+解压)2.将开发好的插件(zip包)放到ES的plugins目录下,并解压3.配置新的policy文件,修改config/jvm.options(方法1)(一般物理机或者用于测试的情况使用)该步骤非必须,由于开发的插件需要用到反射,所以需要放开一定的权限PS.原创 2021-10-08 17:48:21 · 1332 阅读 · 2 评论 -
ES6.x默认store为mmapfs(Linux 64位),mmap性能相关分析
ES6.x默认store为mmapfs(Linux 64位):Store | Elasticsearch Guide [6.8] | Elastichttps://www.elastic.co/guide/en/elasticsearch/reference/6.8/index-modules-store.htmlES7.x默认store为hybridfs,对特定的文件使用niofs或mmapfs:Store | Elasticsearch Guide [7.x] | Elastichttps://..原创 2021-09-27 16:26:16 · 1111 阅读 · 0 评论 -
Elasticsearch CCR源码分析(补充)
接上篇TODOElasticsearch CCR源码分析上篇TODO:http请求(ccr/follow)接收到后,follow集群节点开始全量同步,是以snapshot的模式去拉leader集群数据的,那么是在什么时候将leader集群伪装成snapshot的repository的?理论上应该是在Node初始化的时候...还未验证,后续再补充该逻辑...如何加载ccr repositoryService1.node启动:进入构造方法:org.elasticsearc.原创 2021-07-13 12:42:06 · 323 阅读 · 1 评论 -
Elasticsearch CCR源码分析
本文基于Elasticsearch6.8.5版本ES使用的是Guice框架,依赖注入和暴露接口的方式和Spring差距较大,可先查看guice框架节点启动过程:org/elasticsearch/bootstrap/Elasticsearch.java(main)---》org/elasticsearch/node/Node.java(构造方法)加载插件&module---其中包括---》org/elasticsearch/xpack/ccr/Ccr.java(注册各种action)原创 2021-07-08 21:19:28 · 646 阅读 · 5 评论 -
Elasticsearch的long类型精准匹配异常?
ES version: 7.5.2现象:通过其他字段可以查询出elasticsearch的doc数据但通过某个long类型的字段精准匹配时不能hitGET index_name/_search{ "query": { "term": { "field": { "value": 2856928764909463600 } } }}===>无法hit结果GET ind原创 2021-06-24 15:59:41 · 2769 阅读 · 1 评论 -
ES智能巡检开发设计实践
项目背景PaaS 下管理了大量集群,监控和告警能快速的让开发维护人员,知道系统已经发生故障,并且辅助高效排障。但是无法提前预知集群的健康状况,开发人员和维护人员均无法在故障前及时作出调整。为了帮助用户及时的知道集群的健康状态,更好使用 Elasticsearch 集群,可以定期对集群进行指标检查并给出相应报告。巡检作业及时发现集群的健康问题,集群的配置是否合理,提前主动发现问题,能有效保证集群的稳定性、健状性,从而减少业务中断时间保证服务质量。为了解决集群健康状态提前预知困难的问题,可以通过抽取原创 2021-06-03 21:25:19 · 948 阅读 · 0 评论 -
使用postman调试ES的_msearch或_bulk方法
异常:{ "error": { "root_cause": [ { "type": "illegal_argument_exception", "reason": "The msearch request must be terminated by a newline [\n]" } ], "type": "illegal_argume原创 2021-05-18 14:01:39 · 2402 阅读 · 0 评论 -
Elasticsearch索引生命周期管理-实测demo
介绍1.Elasticsearch(6.6.0及以上版本)提供了ILM功能2.索引生命周期分为4个阶段:hot、warm、cold、delete。其中hot阶段主要负责对索引进行滚动更新操作。阶段描述hot主要处理时序数据的实时写入。可根据索引的文档数、大小、时长决定是否调用rollover API来滚动更新索引(通过policy自动管理)warm索引不再写入,主要用来提供查询cold索引不再更新,查询很少,查询速度会变慢delete索引即将删除测原创 2021-05-07 21:03:59 · 384 阅读 · 0 评论 -
Elasticsearch从请求响应时间变长到缓存逻辑分析
1.起因:(超时分析)1.用户往ES里面导入数据,导入数据的过程中CPU很高,所以查询请求响应变慢,这个是很容易理解的;2.当导入数据完成后,CPU慢慢降下来了,但是发现查询请求响应还有一小段时间是很慢的,此时CPU很低、GC也很少3.很容易想到是不是有哪些任务在执行,导致请求变慢,或者是请求本身变化(经过沟通,排除请求本身变化因素)4.其他消耗性能的任务,最容易想到的就是merge,force merge,flush,查看监控,发现是merge很多5.merge多影响查询,有两原创 2021-05-06 21:09:34 · 1289 阅读 · 0 评论 -
Elasticsearch各个索引结构到底存在哪里?flush、refresh做了什么?
先说结论:1.ES的倒排索引结构本质是一些文件,最终是存在磁盘的;2.refresh操作是将buffer中不可见的数据刷到内存;3.flush操作会先执行一次refresh操作,将buffer中不可见的数据刷到内存,再将内存中的data数据、translog数据刷到磁盘;倒排索引结构怎么理解?为什么说倒排索引结构最终是落到磁盘?update操作与get API...原创 2021-03-08 21:09:42 · 1920 阅读 · 0 评论 -
Elasticsearch出现Connection reset by peer分析
1.异常:Caused by: java.io.IOException: Connection reset by peerat org.elasticsearch.client.RestClient.extractAndWrapCause(RestClient.java:793)at org.elasticsearch.client.RestClient.performRequest(RestClient.java:218)at org.elasticsearch.client.RestC...原创 2021-02-18 11:32:40 · 4646 阅读 · 5 评论 -
Elasticsearch出现field expansion matches too many fields异常
7.4.2的集群里面执行query_string 语句时异常信息:报了"reason": "field expansion matches too many fields, limit: 1024, got: 15448"表示子查询数量大于1024处理方案:1.建议优化查询语句(安全)2.修改配置修改Elasticsearch的config文件夹中的elasticsearch.yml文件,添加行: index.query.bool.max_clause_...原创 2020-12-22 19:13:48 · 2131 阅读 · 0 评论 -
ES版本升级后出现Trying to create too many scroll contexts. Must be less than or equal to: [500]异常
从一个异常说起:[I/O dispatcher 79] WARN RestClient - request [POST http://xx.xx.xxx.xxx:8080/index/_search?scroll=600s] returned 1 warnings: [299 Elasticsearch-6.8.5-78990e9 "Trying to create more than 500 scroll contexts will not be allowed in the next major v原创 2020-10-30 21:00:09 · 6031 阅读 · 7 评论 -
ES中结果震荡问题分析
CASE:场景:查询时出现“同一个DSL语句执行多次结果不一致”,如查询时返回的结果时而出现total=16,时而出现18...配置:refresh_interval = -1; 3节点;2 primary 1 replica;分析:主要的原因是因为有副本(replica)的存在,主分片和副本分片可能不一致,导致最终在主分片和副本分片上计算得到的得分不同,而导致最终的查询结果不一致。不同的查询请求落到不同的分片上,获取到的文档集就可能不一致,最终才会出现hits.to..原创 2020-10-30 20:11:59 · 631 阅读 · 0 评论 -
ES查询效率-Query、Filter&term
目的:Google上博客众说纷纭大同小异,逻辑正确但略为混乱,再此梳理出容易混淆的点1.是否算分只与查询方式有关(与是否term查询、match查询无关)(Query查询)查询上下文:查询操作不仅仅会进行查询,还会计算分值,用于确定相关度;(Filter查询)过滤器上下文:查询操作仅判断是否满足查询条件,不会计算得分,查询的结果可以被缓存;1、Query查询:在使用query进行查询时的执行环境,比如使用search的时候。ES中索引的数据都会存储一个_score分值,分值越高就代表越.原创 2020-10-14 22:34:00 · 2262 阅读 · 0 评论 -
ElasticSearch的Update By Query的坑(使用注意事项及其方案)
ES的Update By Query对应的就是关系型数据库的update set ... where...语句;ES的Update By Query可能存在的坑:比如批量更新时非事务模式执行(允许部分成功部分失败)、大批量操作会超时、频繁更新会报错(版本冲突)、脚本执行太频繁时又会触发断路器等。1. 非事务模式执行所有更新和查询失败都会导致update_by_query中止,并在响应失败时返回。已执行的更新仍然存在。(该过程不会回滚,只会中止)使用时候不建议太大数据的修改;建议增加.转载 2020-10-09 20:41:55 · 12283 阅读 · 7 评论 -
ES 的 unassigned shards 核心处理方案
背景:管理过数百个集群,使用方式千变万化,出现过各种各样的shards分配不了的情况,趁此假期做一些unassigned处理方案的总结;先总结一下:所有的unassigned都可以通过explain API查到原因和处理方案GET /_cluster/allocation/explain{ "index":"index_name", "shard":0, "primary":false}先找到所有的unassigned分片:curl -XGET localho..原创 2020-10-03 11:01:56 · 4055 阅读 · 2 评论 -
ES写入性能的提升方案
从社区上看到一个问题,回答了一下:总结了下提高写入性能的方案:服务端:1. refresh : refresh_interval(1s) / indices.memory.index_buffer_size(10%)2. translog :Index.translog.durability(request,每个请求都落盘)--->async(异步写入) Index.translog.sync_interval---...原创 2020-09-30 17:07:20 · 1408 阅读 · 1 评论 -
High-level-rest-client客户端连接使用与底层逻辑(Java)
1.与其他client的特性对比transport连接方式: tcp连接方式,长连接 作为一个node节点的形式访问服务端(9300端口) 性能最佳 拓展性较差,无法向下兼容 经常出现长连接断开的问题 ES7.x不支持RestLowLevelClient连接方式: http连接,通过keepalive实现长连接 内置连接池 性能较transport略差一些 拓展性好,兼容性高 封装的不够完善 E...原创 2020-09-16 23:07:08 · 2765 阅读 · 0 评论 -
ES集群掉出节点后恢复时出现red
这里写自定义目录标题ES集群掉出节点后恢复时出现red集群red/yellow排查一个比较难处理的caseES集群掉出节点后恢复时出现red集群red/yellow排查基本思路:1.分片设置不合理,单组分片:primary数 + replica数 > node数,则yellow2.total_shards_per_node参数的限制导致分片不能完全分配3.节点掉出导致red4.各种元数据修改、恢复等操作导致rebalance(暂时的init)5…除了上述经验的思路,可以直接使用exp原创 2020-09-08 22:53:24 · 1241 阅读 · 0 评论 -
ES查询流程图解与思考
1.ES有那些搜索方式?Elasticsearch的搜索类型(SearchType类型)1、 query and fetch 向索引的所有分片 ( shard)都发出查询请求, 各分片返回的时候把元素文档 ( document)和计算后的排名信息一起返回。 这种搜索方式是最快的。 因为相比下面的几种搜索方式, 这种查询方法只需要去 shard查询一次。 但是各个 shard 返回的结果的数量之和可能是用户要求的 size 的 n 倍。 优点:这种搜索方式是最快的。因为相比后面的几种es的原创 2020-06-02 11:40:35 · 2406 阅读 · 0 评论 -
查询大量数据时ES中存在的坑
1.查询时返回的数据量大于10000,不可以用page,size进行分页查询(返回的数据单次不能返回超过10000条,返回数据的总和也不能超过10000条)2.返回的数据超过10000时,使用scoll进行查询3.scoll进行查询的时候,传入的每个参数均不可以超过1024个(1024个可以)4.或的关系请用should5.子查询可用complexQuery6.返回某个文档的部...原创 2019-04-29 11:23:47 · 2960 阅读 · 0 评论 -
ES的嵌套查询和嵌套聚合
1.想要实现嵌套查询和嵌套聚合,首先需要在索引里面设置某个属性是嵌套类型(一般是List)-----type=nested2.API的demo-嵌套查询---(使用场景:需要根据list中的两个字段以and的关系进行查询)// 构造布尔查询 BoolQueryBuilder boolQueryBuilder = new BoolQueryBuilder(); ...原创 2019-04-29 11:17:59 · 6334 阅读 · 0 评论 -
ES聚合Aggregation---原生(restful)api
原生的restful api:聚合:只需要通过 aggs,然后通过不同的聚合属性,进行聚合。有多种聚合关系,可以嵌套(下钻) aggs; ES中的聚合API的调用格式如下:"aggregations" : { // 表示聚合操作,可以使用aggs替代 "<aggregation_name>" : { // 聚合名...原创 2019-01-11 13:57:46 · 1776 阅读 · 0 评论 -
elasticsearch之搜索篇------原生
知识点:1、query string search2、query DSL3、query filter4、full-text search5、phrase search6、highlight search------------------------------------------------------------------------------------------...原创 2018-10-09 20:09:28 · 321 阅读 · 0 评论