elasticsearch
道友,且慢
不愤不启,不悱不发,学习就应该是问题驱动的。
微信: bclz_007
展开
-
ES 7.X安全功能的开启配置
Elasticsearch 安全功能入门原创 2020-03-24 15:52:57 · 545 阅读 · 0 评论 -
ES update接口版本冲突问题的论述
基本概念介绍众所周知,es数据的版本控制是通过乐观锁来实现的。es的每个document中都维护了一个_version字段,这个字段表示了这个文档的版本号,文档刚创建之时,_version=1,后续对该文档的任何增删改操作都会使_version递增(注意删除文档也是会递增的!)。假设一个document的_version=4,我们提交了一个update请求去更新该文档,请求后缀带了?verso...原创 2020-03-22 09:33:38 · 3024 阅读 · 0 评论 -
ES编译出来为snapshot版本的解决办法
es 的编译命令如下./gradlew assemble命令编译出来的包默认是带有"SNAPSHOT"后缀的,这种快照版本的的es 安装包,部署起来可能会有问题。比如,当想要获取es版本号的时候,es会报错:illegal version format - snapshots are only supported until version 2.x因此我们需要编译出release版本的...原创 2020-03-02 09:29:10 · 850 阅读 · 0 评论 -
从es中恢复不存储的字段内容的方法
原理分析es中有个隐藏的字段_source,这个字段中存了其他字段的内容,我们直接查询es返回的结果中展示的各个字段的值其实就是从_source字段中读取的。如果想要对一个字段只建索引,不做存储。就是不把这个字段的值存在_source字段中,这样查询结果中就不会显示该字段的内容。如下图所示:从test3的mapping信息中可以看出 name,count字段是不存储字段内容的。因此,我们...原创 2019-12-21 15:25:37 · 1161 阅读 · 0 评论 -
ES内存持续增长问题分析
环境介绍es版本:5.6.4-Xms31g -Xmx31g-XX:MaxDirectMemorySize=10g问题说明用top命令观察ES使用的物理内存不断增加到54.6G已知堆内存31G,堆外内存MaxDirectMemorySize 10G,那么内存使用最高应该不超过41G才对。现在内存使用了54.6G明显超过了预估,那么除了已知的41G外,还有哪些我们不知道的地方在占用内存呢...原创 2019-12-07 11:07:04 · 3915 阅读 · 0 评论 -
elasticsearch deleted shard reason [no longer used]日志的原因
这个日志是debug级别的日志。而且报这个日志并不是意味着es有什么问题。该日志是es的分片迁移过程中产生的。es把分片迁移到其他节点操作是,首先会保留源分片,同时在目标节点上生成新的分片。当目标节点上的分片生成完毕,并且处于活跃状态时。源分片将会被删除,删除的时候就会报deleted shard reason [no longer used]的日志。...原创 2019-11-21 17:58:23 · 588 阅读 · 0 评论 -
es集群节点之间分片个数不均匀问题
场景介绍3个节点的es 集群,node1,node2,node3。node3由于故障,重启了节点。重启后node3上的一个副部分片由于某种原因没有恢复上线,集群的健康之是yellow。此时用es 的/_cat/allocation 命令查看发现,node3上的分片个数远少于其他两个节点。问题分析node3节点故障下线的时候,原本分布在node3上的分片会逐步迁移到node1,node2上。n...原创 2019-10-17 13:47:49 · 3639 阅读 · 1 评论 -
ES5.6.4源码解析--批量索引bulk
引言ES的批量索引操作,可以把多条索引请求合成一次请求,每个请求可以指定不同的索引。当往ES中索引大量数据的时候,使用批量索引能够大大增加索引的数据。接下来让我们通过阅读批量索引的源码来揭开其神秘的面纱。索引请求的预处理批量索引的入口位于TransportBulkAction#protected void doExecute(Task task, BulkRequest bulkR...原创 2018-08-28 20:00:15 · 1958 阅读 · 0 评论 -
ES2.x不支持 javascript问题的解决
ES 版本:2.3.5安装官方文档执行如下命令:DELETE testPUT test/doc/1{ "num": 1.0}PUT test/doc/2{ "num": 2.0}POST test/_search{ "query": { "function_score": { "script_score": { "scrip...原创 2019-06-10 19:43:04 · 374 阅读 · 0 评论 -
为什么es内存使用率到达75%会下降?
有经验的ES使用者可能会发现,正常运行状态下,每当es的内存使用率达到75%左右的时候会开始下降。这种现象也可以在官网的这篇文章中得到佐证 Scenario: How does high memory pressure affect performance?那么为什么es内存使用率到达75%会下降呢?1、首先我们应该知道,es的进程是运行在jvm上的,那么它的内存管理就交给jvm了。2、其次我...原创 2019-07-01 19:02:55 · 1409 阅读 · 2 评论 -
ES的基本操作
创建索引Method:PUThttp://192.168.237.130:9200/people{ "settings":{ &原创 2018-07-29 15:54:18 · 8526 阅读 · 0 评论 -
Elasticsearch 的安装
版本问题版本历史 1.x->2.x->5.x-6.x为什么版本从2.x一下子就跳到5.x呢?由于ES是ELK(Elasticsearch+logstash+Kibana)技术栈的一员,2.x的时候各个组件之间的版本不统一,版本号管理比较乱,比如ES是2.x而Kibana对应的版本为4.x。因此在5.x中对各个中间件的版本号做了统一。单实例的安装前往官网...原创 2018-07-27 12:02:23 · 813 阅读 · 0 评论 -
ES 运维技巧收集--持续更新
大集群重启集群节点临时重启 当修改配置时可能需要重启集群才生效,或者集群发生严重错误无法恢复时都可能需要重启集群 一个集群节点重启前要先临时禁用自动分配,设置cluster.routing.allocation.enable为none,否则节点停止后,当前节点的分片会自动分配到其他节点上,本节点启动后需要等其他节点RECOVERING后才会RELOCATING,也就是分片在其他节点恢复...原创 2018-09-03 21:00:24 · 2074 阅读 · 0 评论 -
ES5.6.4源码编译
源码下载git clone https://github.com/elastic/elasticsearch.git切换版本git checkout v5.6.4用gradle 编译gradle 的版本是4.0.1gradle idea如果编译过程中遇到因为下载文件失败而导致编译失败的情况,可参考ES5.6.4源码编译 亲测有用。远程调试...原创 2018-08-23 18:15:23 · 466 阅读 · 1 评论 -
ES5.6.4源码解析--聚合查询流程
aggregationPhase.preProcess(searchContext);在执行聚合查询之前做一些准备:构建aggregationContext用于存放聚合过程中产生的数据;构建aggregators,他是聚合过程中统计数据的具体实现,由aggregator构成了采集器collectors。...原创 2019-09-26 16:58:48 · 1413 阅读 · 0 评论 -
ES5.x 中long类型不支持time zone
问题为了在ES上根据时间进行统计,我在ES5.6.4上做了date_histogram聚合,查询语句如下所示{ "aggregations": { "dateVspAggs": { "date_histogram": { "field": "timestamp", "interval": "day", "time_zone...原创 2019-05-22 11:57:09 · 3438 阅读 · 1 评论 -
ES 性能优化方案-----------收集
亿级规模的Elasticsearch优化实战原创 2019-03-21 19:04:55 · 1715 阅读 · 0 评论 -
ES 堆对外内存溢出
异常:java.lang.OutOfMemoryError: Direct buffer memory解决将ES的jvm参数配置中的-XX:+DisableExplicitGC去掉,因为这个参数可能会导致对外内存的垃圾无法被回收。具体原因分析看如下:-XX:+DisableExplicitGC 与对外内存的关系:https://iamzhongyong.iteye.com/blog/17...原创 2019-03-18 14:32:09 · 3531 阅读 · 0 评论 -
ES5.6.4源码分析----查询流程
分片路由参考:https://www.jianshu.com/p/cfdfefbe30a2原创 2018-09-20 18:39:25 · 923 阅读 · 0 评论 -
ES5.6.4源码解析----分片在磁盘间的分配策略
引文ES的索引是由若干个分片组成,在索引创建的时候需要指定分片个数、副本个数。如果没有指定,分片个数默认为5个,副本个数默认1个。一个索引的各个分片会根据路由算法均匀的分布于各个节点中。本文提出的问题是,如果一个分片指定分片到某个节点,而该节点的数据路径分布于多个磁盘上,即elasticsearch.yml中的配置如下:path.data:/disk1/data/elasticsearch,/...原创 2018-09-26 15:19:55 · 1030 阅读 · 0 评论 -
linux环境5.6.4版本的kibana+x-pack离线安装
kibana安装kibana安装包下载原创 2018-10-12 10:51:30 · 1367 阅读 · 0 评论 -
ES5.6.4源码分析----索引的创建过程
入口TransportCreateIndexAction#masterOperation解析请求中的索引名称final String indexName = indexNameExpressionResolver.resolveDateMathExpression(request.index());由于创建索引请求中的索引名称可能是日期数学表达式表示的,所以要将其解析成具体的名称。规...原创 2018-09-27 19:14:00 · 679 阅读 · 0 评论 -
ES5.6.4源码分析----gateway流程
背景本文转载自 https://www.easyice.cn/archives/226es 存储的数据有以下几种形式: - state - index - translogindex 为 lucene 生成的索引文件translog 为es 产生的事务日志state 是元数据信息,有以下几种:nodes/0/_state/global-82.st 集群层面元信息...转载 2018-09-29 15:45:02 · 377 阅读 · 0 评论 -
ES 配置解析---持续更新中
index.max_result_windowES中分页查询的实现需要指定两个值:from;size。比如:from=100000 size=10 那么查询的结果就是第100000条数据到100010数据。对于这种查询ES实际上的做法却是把from+size=100010条数据都加载到内存中,再去100000~100010这10条数据返回。这样的做的弊端在于from+size 太大...原创 2018-10-18 20:28:36 · 1079 阅读 · 0 评论 -
ES5.6.4源码分析----多实例的原理
起源本文的起因源于现场问题的排查。首先要说明的是ES的数据默认存储在nodes目录下,假设ES配置文件中指定的数据目录为/tmp/elasticsearch,那么ES会把数据存在如下目录:/tmp/elasticsearch/nodes正常情况下nodes目录下只有一个目录0,即/tmp/elasticsearch/nodes/0ES的所有数据就存在0目录下。然而ES的现场环境经...原创 2018-10-09 20:39:58 · 539 阅读 · 0 评论 -
prometheus 监控 elasticsearch 的安装配置
prometheus 监控 elasticsearch 的安装配置转载 2018-11-01 18:50:17 · 4249 阅读 · 0 评论 -
ES reroute api的升级
背景今天用一个脚本修复ES5.6.4的分片,报如下错误:找不到reroute命令。想到之前这个脚本都是用于修复ES2.x的分片的,可能是ES5.x对reroute命令升级了。看了一下官方文档果真如此。分析ES2.x的reroute命令如下:curl -XPOST 'localhost:9200/_cluster/reroute' -d '{ "commands" : [ { ...原创 2018-11-23 11:14:38 · 730 阅读 · 0 评论 -
ES fieldData缓存的分析
看到一篇对ES断路器,和fielddata缓存说的比较清楚的文章收藏一下~ElasticSearch:从[FIELDDATA]Data too large错误看FieldData配置转载 2018-12-29 11:43:17 · 1060 阅读 · 0 评论 -
ES 5.6.4源码解析---translog
ES 中translog是存储于磁盘上的文件,每个ES分片都会一个translog,所以translog的存储路径就位于分片数据目录下。如下图所示:1:索引名称2:分片名称3存放translog文件的目录Translog目录下有2种格式的文件,tlog后缀的文件和ckp后缀的文件。translog中存储了ES的操作记录,具体的说是ES还没落盘的数据的操作记录。因此不难看出trans...原创 2019-01-30 18:55:23 · 2279 阅读 · 0 评论 -
ES启动失败:__es__.tmp已经存在
问题在ES 2.x版本中发生的一起动失败报错:java.nio.file.FileAlreadyExistsException: /elasticsearch-20/cluster_name/nodes/0/__es__.tmp问题分析在ES的源码中通过关键字__es__.tmp找到了相关源码,如下所示:/** * This method tries to write an ...原创 2019-02-26 15:13:21 · 1128 阅读 · 1 评论 -
ES QueryCache解密
讲得很好,还有源码分析,转发一下Elasticsearch的Query Cache 知识梳理转载 2019-03-04 14:35:11 · 357 阅读 · 0 评论 -
ES的transportClient初始化过程解析
TransportClient的初始化流程创建client的代码在初始化TransportClient的时候,我们将嗅探模式开启,即client.transport.sniff设置为true.Settings settings = Settings.settingsBuilder() .put("client.transport.sniff", true).p...原创 2019-03-12 11:51:17 · 3733 阅读 · 0 评论 -
ES2.X 到 ES5.x的一次数据迁移
gradle的安装链接地址:https://gradle.org/releases/下载binary-only解压下载的压缩包到指定位置,比如:D:\program\gradle-4.9\配置环境变量右键计算机->属性->高级系统设置->环境变量,在系统变量区域,点击新建,输入变量名为:GRADLE_HOME,变量值为:D:\program\gra...原创 2018-08-18 16:37:34 · 1254 阅读 · 0 评论