ElasticSerach
攻城狮Kevin
爱学习,爱工作,爱生活
展开
-
ES踩坑——提高写入性能之集群负载均衡
还是往ES集群写入耗时太长,速率太慢的问题,当文档id,即_id自定义指定的情况下,由于每条文档往ES写入时,会对_id进行hash分配其写到哪个节点的主分片上,这样有可能出现写偏了的情况,即集群某台节点的负载特别高,所以一般建议_id让ES自动设置。当集群某台节点负载特别高时,集群会自动进行负载均衡,将某个数据量异常大的主分片数据迁移至其他分片,这个负载均衡过程是很耗集群写入性能的,当多份数据往集群写入时,有可能因为集群的负载均衡占用太多资源,导致写入速率过慢。这种情况可以设置某.原创 2020-05-18 20:48:47 · 2542 阅读 · 0 评论 -
ES踩坑——提高写入性能之合理安排加副本和删索引的时机
问题表现是:ES集群的cpu和负载都非常低,几乎与无数据写入时一致,indexing rate也很低,基本在2000-5000左右;但是此时有6个大数据量的任务在并行往ES集群各自的索引写入,但是耗时都严重变长,比如正常1h运行完毕的写入任务可以变成14h才运行完毕。问题解决如下:正常在ES写入时,会把索引副本关闭,写完后再加副本。但是当多个数据源,同时并行往一个ES集群的多个索引写入数据时,如果流程设计为:数据源写入ES -> 写入完毕 -> 加副本、删除过期索引.原创 2020-05-18 20:43:36 · 1769 阅读 · 0 评论 -
ES的数据写入原理,refresh和flush
数据写入ES集群,主要是经过以下2个主要步骤:1. 读取数据 -> 验证(master节点分发给data节点处理,或直接访问data节点主分片)2. 同时写入buffer缓冲区和translog日志文件 -> 生成segment file -> 合并小segment file生成大segment file -> 将合并的segment file刷写到系统缓存,此时...原创 2020-05-07 15:16:43 · 6627 阅读 · 0 评论 -
记录用户画像标签数据入库ES过程中,分词、分片、副本、压测等
最近公司用户画像平台一期3000余个标签数据,需要用到ES集群进行数据写入和读取,前前后后踩坑经历一个月,这篇博文记录一下总体流程和踩坑心得。大概流程是将3000余个标签的数据存储在hive表中,然后通过spark任务写入到ES集群中,同时会从ES集群中读取数据,进行聚合等操作。一、ES的分词、shards、replications、fielddata的意义(设定mapping的原则)...原创 2019-09-23 20:58:33 · 2981 阅读 · 3 评论 -
python操作es数据库
有效文档原创 2023-01-04 11:02:37 · 481 阅读 · 0 评论 -
使用bulk方式将json文件数据导入ES
使用json文件可以给es中导入数据,10万条左右的数据可以一次导入,数量太大时导入就会报错。大数量的到导入还是需要用bulk方式。accounts.json文件格式如下: {"index":{"_id":"1"}} {"title":"learn es","content":"work hard"} {"index":{"_id":"2"}} {"title":"learn hadoop","content":"work hard"}...如果...原创 2020-06-04 11:09:53 · 1342 阅读 · 0 评论 -
每隔半点清理一次ES缓存脚本
ES清空所有索引的缓存POST _cache/_clearES清空指定索引的缓存POST /{_index}/_cache/_clear通过脚本来清理缓存如下#!/bin/bash# 为防止ES查询缓存过大,每半点清除一次缓存curl -uES访问账号:ES访问密码 -s -XPOST "http://ES访问域名:ES访问密码/_cache/clear"exit 0然后利用crontab控制每隔半点执行一次清理缓存脚本即可*/30 * * * * /全..原创 2020-05-22 15:48:24 · 1032 阅读 · 1 评论 -
ES删除别名、删除索引、添加副本、修改interval时间等操作的脚本
#!/bin/bashif [ $# -eq 1 ]; then day=$1else day=`date +"%Y%m%d" -d"-1 days"`fiesType="_doc"esIndex="ES索引名前缀"esIndexName=${esIndex}_${day}/${esType}name=dataToES_${day}userandkey=ES访问账号:ES访问密码ipAndPort=ES访问域名:ES访问端口#添加当天日期的索引别名使查询有效#保.原创 2020-05-21 14:26:39 · 1679 阅读 · 0 评论 -
ES通过脚本自动化删除、创建索引,及mapping基础配置
利用java代码删除ES索引、创建ES索引public class smartNormanCreateOnlineIndex { public static void main(String[] args) throws Exception { String user_id_types = args[0]; String tag_origin_short_name = args[1]; String dt = args[2];原创 2020-05-21 14:16:04 · 600 阅读 · 0 评论 -
ES自动负载均衡、分片迁移的表现
当发现某个索引并没有数据写入,但其indexing Rate的数值并不为0 /s的时候,一般是集群在做负载均衡,或者正在给索引添加副本,把该索引的数据,将数据从多数据量的节点,迁移一部分至低数据量的节点。...原创 2020-05-19 17:42:51 · 2042 阅读 · 0 评论 -
针对ES对于upsert和nested嵌套类型数据支持不友好的一种解决方案
index模式入库ES索引:新写入的文档,会在ES索引中查找_id是否存在,不管存在不存在,都会直接覆盖;upsert模式入库ES索引:新写入的文档,会在ES索引中查询_id是否存在,如果不存在则覆盖,如果存在则取出原始文档里的数据(版本1),补上新增文档的数据,合并后生成的数据(版本2)重新写入_id文档,并同时删掉版本1的文档原始数据。所以ES对于upsert模式更新入库的支持性能并不是很好,数据量小,且索引里没有数据的时候影响不大,但是数据量大,且索引里已经存在数据的时候影响较原创 2020-05-09 20:52:40 · 1708 阅读 · 0 评论 -
Spark程序将Json数据写入ES索引的配置参数详解
1."es.http.timeout" -> "5m""es.http.retries" -> "50"这两个参数是控制http接口层面的超时及重试,覆盖读请求和写请求,默认值比较小,默认超时时间为1分钟,重试次数为3,建议调整为超时时间5分钟,重试次数50次。2."es.nodes.wan.only" -> "true""es.nodes.dis...原创 2020-04-23 20:00:09 · 2898 阅读 · 2 评论 -
Spark程序将Json数据写入ES索引
采用import org.elasticsearch.spark.rdd.EsSpark的相关API,将Json格式的数据写入Es索引中需要引入的依赖在最后面<dependency> <groupId>org.elasticsearch</groupId> <artifactId>elasticsearch-hadoop<...原创 2020-04-23 17:46:49 · 1574 阅读 · 1 评论 -
Spark将Json数据写入ES报权限错误:action [cluster:monitor/nodes/info] is unauthorized for user
使用org.elasticsearch.spark.rdd.EsSpark的APIEsSpark.saveJsonToEs(mergeData, esIndexName, esConf)将Json数据写入ES集群,报错信息如下:org.elasticsearch.hadoop.rest.EsHadoopInvalidRequest: org.elasticsearch.hadoo...原创 2020-04-23 17:35:39 · 3736 阅读 · 0 评论 -
对nested嵌套字段和普通字段,ES数据写入时mapping中未设定也会自动兼容
例如我的mapping中,对于嵌套对象的结构如下:"58sy_activity": { "type": "nested", "properties": { "cooling_score": { "type": "keyword" }, "label_n": { "type": "keyword" }, "tag_valu...原创 2020-04-21 22:35:19 · 1847 阅读 · 0 评论 -
StringBuilder转Json遇到的坑,创建ES索引报index patterns are missing异常
org.json使用的时候,想把jsonString转jsonObject;可以用new JsonObject(String)但是如果用new JsonObject(StringBuilder),转换成的json为空。测试代码如下:public class Test { public static void main(String[] args) { Stri...原创 2020-04-21 17:36:55 · 2119 阅读 · 0 评论 -
通过Spark任务将数据写入ES报错——ES节点ip错误
报错如下org.elasticsearch.hadoop.rest.EsHadoopNoNodesLeftException: Connection error (check network and/or proxy settings)- all nodes failed; tried [[10.162.7.17:9219, 10.162.7.18:9219, 10.162.7.16:921...原创 2020-02-28 10:53:26 · 1909 阅读 · 0 评论 -
curl发送Json参数
命令如下:curl -i -X POST -H 'Content-type':'application/json' -d {\"a\":\"abcd\"} http://127.0.0.1:28005/原创 2020-01-09 11:05:56 · 1196 阅读 · 0 评论 -
常用ES查询DSL语句
1. 针对hive表中jsonObject类型的String数据mapping中定义如下:"esf_room": { "type": "text", "fields": { "keyword": { "type": "keyword" } }, "norms": false},DSL查询语句如下:GET /hdp_teu_dia_f...原创 2019-11-12 16:08:23 · 5031 阅读 · 1 评论 -
ES集群宕机后处理——重新分配shards,负载均衡
ES集群5台机器,由于同时读写导致其中一台机器宕机,原本每天的索引shard数设定为10,这样5台机器每台分配2个shard,但是一旦集群宕机,重启集群后,5号机器宕机导致它上面的shard会转移到其他1-4号机器上。如果此时往ES里写数据,新索引的10个shard就都会分配到5号机器(因为它上面一个shard都没有,ES集群会优先往资源丰富的机器分配shard),如果此时写入数据,请...原创 2019-10-10 16:09:14 · 4065 阅读 · 0 评论 -
ES报连接错误的处理:Connection error (check network and/or proxy settings)- all nodes failed; tried
用户画像项目的数据侧,需要将hive表在HDFS的数据,通过spark程序批次写入ES集群,最近几天做压测,发现spark程序运行到一半就挂掉,日志报错如下:org.apache.spark.util.TaskCompletionListenerException: Connection error (check network and/or proxy settings)- all nod...原创 2019-09-17 11:10:27 · 10165 阅读 · 0 评论 -
5种常用数据库对比 & ES数据库的优势所在
常用的5种数据库:redis、mysql、ES、hbase、hive在实际生产环境下,如果需要找到一种容纳较大规模数据并且交互性好的数据库,使用ES比较好mysql虽然家互相好,但是扩容能力有限hbase虽然支持海量数据的存储,但由于查询是基于磁盘,数据在HDFS上,查询的灵活性不足,主要依靠rowkey查询ES可以在容量和交互性上达到一个非常不错的平衡。此外,ES数...原创 2019-04-11 11:48:06 · 16875 阅读 · 0 评论 -
elasticsearch详解(一)——es是什么、能做什么?
版权声明:本文为博主原创文章,欢迎转载,转载时请注明出处。欢迎留言讨论,大数据讨论qq群201011292 https://blog.csdn.net/Dante_003/article/details/76890218 &lt;/div&gt; ...转载 2019-01-03 15:06:05 · 28969 阅读 · 0 评论 -
elasticsearch详解(二)——初识es
&lt;h3 id="基本概念"&gt;&lt;a name="t0"&gt;&lt;/a&gt;基本概念&lt;/h3&gt;es里面有很多核心概念,从一开始了解这些概念会更有助于了解es。准实时(NRT,near realtime)es是一个准实时的搜索平台,这就意味当你存一条数转载 2019-01-03 15:04:07 · 370 阅读 · 0 评论