Elasticsearch
文章平均质量分 79
笑天居士
天下风云出我辈,一入江湖岁月催。皇图覇业谈笑中,不胜人生一场醉。
展开
-
ES节点服务器异常掉电重启导致shard不能启动的问题修复
今天elasticsearch两个节点服务器异常掉电重启,遇到translog损坏的异常,将修复的过程记录下来。1、问题单机数据量有2亿+,一个index,20+个字段,使用bulk不停的写数据,bulk.size=5000,此时机器意外断电宕机。机器修复后重启ES,出现translogCorruptedException异常:[2018-04-18 16:29:25,95...原创 2018-04-18 22:04:03 · 3458 阅读 · 0 评论 -
Elasticsearch随笔02
fields 自定义返回字段{ //"_source": false, //"_source": ["aa*", "bb*"] //"_source": ["username"] "fields": ["username"], "aggs" : { "genders" : { "terms" : { "field": "原创 2016-03-02 10:16:12 · 1286 阅读 · 0 评论 -
让Logstash每次都从头读文件
input { file { path => ["/data/test.log"] start_position => "beginning" sincedb_path => "/dev/null" }}output { stdout { codec => rubydebug }}要点就在这行转载 2016-03-02 10:15:17 · 10509 阅读 · 0 评论 -
关于fielddata数据占用内存过大的解决方法
参考文章Support in the Wild: My Biggest Elasticsearch Problem at Scalehttp://blog.csdn.net/jiao_fuyou/article/details/50478198Understanding FielddataBy default, fielddata is loaded on demand, which means t原创 2016-01-13 15:59:34 · 10200 阅读 · 0 评论 -
elasticsearch高级配置之分片分布规则设置
Java代码 cluster.routing.allocation.allow_rebalance 设置根据集群中机器的状态来重新分配分片,可以设置为always, indices_primaries_active和indices_all_active,默认是设置成indices_all_active来减少集群初始启动时机器之间的交互。 Java代码转载 2016-01-13 14:31:45 · 11346 阅读 · 1 评论 -
ES内存那点事
“该给ES分配多少内存?” “JVM参数如何优化?““为何我的Heap占用这么高?”“为何经常有某个field的数据量超出内存限制的异常?““为何感觉上没多少数据,也会经常Out Of Memory?”以上问题,显然没有一个统一的数学公式能够给出答案。 和数据库类似,ES对于内存的消耗,和很多因素相关,诸如数据总量、mapping设置、查询方式、查询频度等等。默认的设置虽开转载 2016-01-13 12:58:32 · 15739 阅读 · 0 评论 -
控制Elasticsearch分片和副本的分配
ES集群中索引可能由多个分片构成,并且每个分片可以拥有多个副本。通过将一个单独的索引分为多个分片,我们可以处理不能在一个单一的服务器上面运行的大型索引,简单的说就是索引的大小过大,导致效率问题。不能运行的原因可能是内存也可能是存储。由于每个分片可以有多个副本,通过将副本分配到多个服务器,可以提高查询的负载能力。 为了进行分片和副本的操作,ES需要确定将这些分片和副本放到集群节点的哪转载 2016-01-12 09:25:56 · 29269 阅读 · 6 评论 -
Elasticsearch 并发修改乐观锁
版本控制的一个例子curl -XPOST http://localhost:9200/test/test/1 -d '{"msg": "test"}'{ "_index": "test", "_type": "test", "_id": "1", "_version": 1, "created": true}curl -XPOST http://loca原创 2016-01-08 12:53:55 · 6383 阅读 · 0 评论 -
把 ElasticSearch 当成是 NoSQL 数据库
Elasticsearch 可以被当成一个 "NoSQL"-数据库来使用么? NoSQL 意味着在不同的环境下存在不同的东西, 而erestingly 它并不是真的跟 SQL 有啥关系. 我们开始只会觉得 "可能"而已, 所以细细研究了 Elasticsearch 的各种属性,包括它已经为了成就最具灵活性,可伸缩性和性能优异的分析查询引擎的那些属性.NoSQL 数据库是什么?转载 2016-01-11 10:02:55 · 4925 阅读 · 0 评论 -
ElasticSearch优化设计
1 索引优化 ES索引优化主要从两个方面解决问题: 一、索引数据过程 大家可能会遇到索引数据比较慢的过程。其实明白索引的原理就可以有针对性的进行优化。ES索引的过程到相对Lucene的索引过程多了分布式数据的扩展,而这ES主要是用tranlog进行各节点之间的数据平衡。所以从上我可以通过索引的settings进行第一优化:转载 2016-01-11 09:23:34 · 2109 阅读 · 0 评论 -
ELK平台性能优化(不断完善中)
架构层面在logstash shipper和index之间增加redis或kafaka代理缓存ElasticsearchES系统性能让JVM使用OS的max-open-files ulimit -n 1000000es_parms="-Delasticsearch -Des.max-open-files=ture"增加ES JVM内存大小,至少2G,越大越好修改elasticsear原创 2015-11-11 17:07:02 · 12992 阅读 · 1 评论 -
Lucene 查询中的距离查询(proximity query)
http://chenlinux.com/2016/04/04/lucene-proximity-querystring/我们在使用 ELK 的时候,使用 Lucene querystring 语法的机会,远超过使用 Elasticsearch 的 query DSL。毕竟在搜索框里写语法比自己拼 JSON 简单多了。不过一般我们用的 querystring 语法总转载 2016-04-07 11:33:10 · 2319 阅读 · 0 评论 -
ES的一些优化经验
亿级规模的ES查询优化实战能用filter就不用query filter拿到相应的doc后不计算score不用排序 query会对符合条件的doc计算score并进行排序 filter的查询速度比query快很多增加相关cache的配置 indices.cache.filter.size: 30% indices.fielddata.cache.size: 60% index.cac转载 2016-04-25 13:26:18 · 7334 阅读 · 0 评论 -
elasticsearch出现TranslogCorruptedException导致shard不能启动的问题修复
测试elasticsearch过程中,遇到translog损坏的异常,将修复的过程记录下来。1. 问题单机数据量有8亿+,一个index,20+个字段,使用bulk不停的写数据,bulk.size=5W,此时机器意外断电宕机。机器修复后重启ES,出现translogCorruptedException异常:[plain] view plain c转载 2018-04-18 21:38:23 · 3647 阅读 · 0 评论 -
追踪同步分片副本
转自: easyice.cn周末抽空翻译了官网一篇关于 allocation id 的文章,这对理解 ES5之后主分片选举策略至关重要。原文链接elasticsearch 通过在集群中保留多个数据副本的方式提供故障转移功能,当出现网络分区或者节点挂掉时,更改操作可能无法在所有副本上完成。这篇博客展示了 elasticsearch 的内部机制之一,如何把未产生更改的 shar转载 2017-11-13 11:07:57 · 1949 阅读 · 0 评论 -
将 ELASTICSEARCH 写入速度优化到极限
转自:https://www.easyice.cn/archives/207目录 [隐藏]translog flush 间隔调整索引刷新间隔调整: refresh_intervalrefresh_intervalsegment mergeIndexing Bufferbulk 线程池和队列大小磁盘间的任务均衡节点间的任务均衡索引过程调整和优化自动生成 doc ID调整字段 Mappings调整_s...转载 2017-11-13 11:02:48 · 22506 阅读 · 3 评论 -
用 logstash 解析 json 数组
原始输入日志文件每行日志格式如下,json 数组格式的: [{“a”:1},{“a”:2}]要求拆分成2行事件,在ES中保存两个文档 {“a”:1} {“a”:2}本来以为挺麻烦,原来 input -> codec => json 直接支持解析这种格式,真愚昧啊 file { type => "test" path => "/home/jfy/tmp/te原创 2017-11-01 16:06:43 · 7384 阅读 · 0 评论 -
Elasticsearch优秀的索引设置技巧
下面的索引设置是从国外一家优秀的图片搜索公司获取,可以从其设置索引的设计上得到一些如何提高索引设计技巧的方式:{ "500px.photos-2016-05-06-20-09": { "aliases": { "500px.photos": {} }, "mappings": { "photo": { "_all": {转载 2017-11-09 11:25:48 · 3126 阅读 · 0 评论 -
Elasticsearch集群冷热分离-实际操作
这次冷热分离将4个节点,分别2个为一组,分别叫做 cold & hot,hot 组两个节点,cold 组两个节点节点级别配置在 hot 组的两个节点的 elasticsearch.yml 配置文件 Node 配置段中增加node.tag: hot在 cold 组的两个节点的 elasticsearch.yml 配置文件 Node 配置段中增加node.tag: cold索引级别配置为了让新建的的索引原创 2017-10-26 15:22:52 · 6617 阅读 · 1 评论 -
让Elasticsearch集群冷热分离、读写分离
根据Elasticsearch中文社区《ES冷热分离(读写分离) hot, stale 场景》一篇整理的。一、冷热分离按《控制Elasticsearch分片和副本的分配》来设置,将hot,stale数据分到不同的集群上去hot集群只保留最近一天或两天数据写一个定时任务每天凌晨将前一天的索引标记为stalePUT /index_name/_settings{ "index.routing原创 2016-01-13 15:51:07 · 24027 阅读 · 2 评论 -
如何快捷的判断一批索引中不存在的或 close 的索引
Elasticsearch查询多个索引时,如果其中某个索引不存在或closed,则该查询直接返回 ”404 索引丢失“ 错误如:GET /ocslog-2016.08.03,ocslog-2016.08.04,ocslog-2016.08.05,ocslog-2016.08.06/_search假如:ocslog-2016.08.03不存在,则将直接返回:{ "error": "IndexM原创 2016-08-12 21:33:26 · 3525 阅读 · 1 评论 -
用ElasticSearch,LogStash,Kibana搭建实时日志收集系统
介绍这套系统,logstash负责收集处理日志文件内容存储到elasticsearch搜索引擎数据库中。kibana负责查询elasticsearch并在web中展示。logstash收集进程收获日志文件内容后,先输出到redis中缓存,另一logstash处理进程从redis中读出并转存到elasticsearch中,以解决读快写慢速度不一致问题。原创 2015-06-30 12:20:21 · 5011 阅读 · 1 评论 -
Performance Considerations for Elasticsearch Indexing
原文地址:https://www.elastic.co/blog/performance-considerations-elasticsearch-indexingUpdate November 2, 2015: If you're running Elasticsearch 2.0, check out this updated post about performanc转载 2016-01-08 09:56:21 · 1659 阅读 · 0 评论 -
Support in the Wild: My Biggest Elasticsearch Problem at Scale
原文地址:https://www.elastic.co/blog/support-in-the-wild-my-biggest-elasticsearch-problem-at-scaleAs a Support Engineer at Elastic, I come across a lot of different issues from our customers, ra转载 2016-01-07 18:44:17 · 1365 阅读 · 0 评论 -
Index vs. Type
https://www.elastic.co/blog/index-vs-typeWho has never wondered whether new data should be put into a new type of an existing index, or into a new index? This is a recurring question for new转载 2016-01-07 18:50:16 · 1742 阅读 · 0 评论 -
Elasticsearch _all字段
_all字段_all字段是把所有其它字段中的值,以空格为分隔符组成一个大字符串,然后被分析和索引,但是不存储,也就是说它能被查询,但不能被取回显示。_all能让你在不知道要查找的内容是属于哪个具体字段的情况下进行搜索,例如:PUT my_index/user/1 { "first_name": "John", "last_name": "Smith", "date_of_原创 2015-11-12 16:29:38 · 19412 阅读 · 1 评论 -
Elasticsearch Query String Query
Query String QueryeditOn this pageQuery string syntaxElasticsearch Reference: master2.x2.12.0 (current)1.71.61.51.41.30.90Getting StartedSetupBreaking转载 2015-11-12 17:06:21 · 9165 阅读 · 1 评论 -
从logstash -> output -> elasticsearch动态模板说起
logstash索引映射"mappings": { "_default_": { "dynamic_templates": [ { "string_fields": { "mapping": { "index": "analyzed"原创 2015-11-12 13:22:08 · 8097 阅读 · 0 评论 -
ELK:kibana使用的lucene查询语法
kibana在ELK阵营中用来查询展示数据elasticsearch构建在Lucene之上,过滤器语法和Lucene相同kibana4官方演示页面全文搜索在搜索栏输入login,会返回所有字段值中包含login的文档使用双引号包起来作为一个短语搜索"like Gecko"字段也可以按页面左侧显示的字段搜索限定字段全文搜索:fiel转载 2015-11-05 14:07:47 · 10272 阅读 · 0 评论 -
Logstash处理json格式日志文件的三种方法
file { type => "voip_feedback" path => ["/usr1/data/voip_feedback.txt"] format => json sincedb_path => "/home/jfy/soft/logstash-1.4.2/voip_feedback.access" }原创 2015-10-16 09:06:11 · 49201 阅读 · 0 评论 -
ElasticSearch关联查找
ElasticSearch是一个基于Lucene的开源搜索引擎,支持全文检索,提供restful接口。在ES中,提供了类似于MongoDB的面向文档存储服务,这种面向文档的存储非常灵活,但是文档与文档直接的关联却比较麻烦,MongoDB里面有DBref,ElasticSearch里面却没有这个,这篇文章就简单讲一讲ES的关联查询。使用nested:这种类型支持在一个文档中嵌入多个另转载 2015-11-05 14:13:57 · 4473 阅读 · 1 评论 -
Elasticsearch 两个可以用于压缩数据尺寸的特性
Doc ValuesDoc Values 会压缩存储重复的内容。给定这样一个简单的 mappingmappings = { 'testdata': { '_source': {'enabled': False}, '_all': {'enabled': False}, 'properties': { '转载 2015-11-05 14:11:22 · 5407 阅读 · 0 评论 -
Elasticsearch随笔 01
translog一致性ES索引的一致性通过translog来保证,就是即使内存中的数据没有来的及写入磁盘,ES重启后也会从translog中恢复数据。 那么translog的一致性怎样保证呢?translog是日志文件,日志文件也有缓存,那么在translog在缓存时,OS挂了,怎么办? translog也会周期性的sync到磁盘,参数:index.gateway.local.sync 控原创 2015-11-05 11:10:21 · 832 阅读 · 0 评论 -
为ElasticSearch添加HTTP基本认证
ES的HTTP连接没有提供任何的权限控制措施,一旦部署在公共网络就容易有数据泄露的风险,尤其是加上类似elasticsearch-head这样友好的前端界面,简直让你的数据瞬间裸奔在黑客的眼皮底下。项目上线前做十万伏特的防护当然不现实,但至少,我们不要裸奔,穿一套比基尼吧。而做一个简单的HTTP认证并不需要从头造轮子,elasticsearch-http-basic就提供了针对ES HTTP连转载 2015-09-10 08:45:06 · 10341 阅读 · 2 评论 -
用logstash发邮件告警
logstash input http该输入插件会让logstash在一个端口上监听http请求,用户可以通过http请求发送告警请求。input { http { host => "0.0.0.0" port => 9500 type => "heartbeat" user => "loguser" passw原创 2015-11-13 13:39:23 · 7970 阅读 · 1 评论 -
logstash elasticsearch output插件的bulk提交
logstash的output设置为elasticsearch时,实际上logstash在向es中插入数据时也是bulk提交的。参数:flush_size 表示多少条flush一起提交到es.参数:idle_flush_time 表示距离上次flush的时间之后多少秒自动flush提交一次这两个参数一起用的意思就是: 累计缓冲event条数达到flush_size值会flush一次 距离上次原创 2015-11-02 17:20:35 · 7834 阅读 · 3 评论 -
新浪32亿条实时日志的Elasticsearch优化
Elasticsearch Optimization Checklist假设hardware 假设index/query rate假设elasticsearch用户运行elasticsearchhardware Level见 [Elasticsearch Hardware Recommendation][9]。System Leveladjust vm.swappiness [1][1]转载 2015-12-14 15:56:43 · 9874 阅读 · 0 评论 -
Elasticsearch as a Time Series Data Store
原文地址:https://www.elastic.co/blog/elasticsearch-as-a-time-series-data-storeAs the project manager of stagemonitor, an open source performance monitoring tool, I've recently been looking for a d转载 2016-01-07 18:55:47 · 2873 阅读 · 0 评论 -
把Elasticsearch作为时间序列数据库使用
这篇文章算是对另一篇《Elasticsearch as a Time Series Data Store》的简单翻译吧,自己的理解吧。首先_source被关闭了,这样原始的json文档不会被重复存储一遍。其次_all也被关闭了。而且每个字段的store都是False,也就是不会单独被存储。这些都关掉了,那么数据存哪里了?存在doc_values里。doc_values用于在做聚合运算的时候,根原创 2015-11-05 15:42:00 · 8358 阅读 · 0 评论 -
通过elasticsearch批量创建kibana的visualize图表及dashboard
kibana中展示的visualize图表及dashboard,是保存在Elasticsearch的kibana-int索引的dashboard类型中的(以kibana3来说明)。下面获取一保存的一个dashboardGET http://localhost:9200/kibana-int/dashboard/skytone.optlog{ "_index": "kibana-int",原创 2015-12-15 09:58:49 · 9316 阅读 · 9 评论