ELK
文章平均质量分 85
三劫散仙
唯有学习,可以解忧
展开
-
ElasticSearch聚合查询小例子
在ES里面所有的聚合实例都由AggregationBuilders类提供静态方法构造,我们先看下常用有哪些方法使用:[code="java"](1)统计某个字段的数量 ValueCountBuilder vcb= AggregationBuilders.count("count_uid").field("uid");(2)去重统计某个字段的数量(有少量误差) C...2017-03-18 19:42:20 · 348 阅读 · 0 评论 -
浅谈ElasticSearch的嵌套存储模型
[img]http://dl2.iteye.com/upload/attachment/0123/3857/69b9e8f2-2cf0-3079-a966-9331ad1e91ae.jpg[/img]最近一个半月都在搞SparkStreaming+Hbase+Redis+ES相关的实时流项目开发,其中重度使用了ElasticSearch作为一个核心业务的数据存储,所以这段时间更新文章较少,...2017-02-28 11:19:30 · 480 阅读 · 0 评论 -
如何使log4j生成json格式的log
使用java开发项目时,log日志一般都是应用程序必不可少的一部分,大部分情况下我们的log文件都是普通的文本信息,通过level来标记不同级别的日志。日志的目的,主要还是为了出现问题时有追踪的途径,方便从里面查出原因,在数据量小的时候通过linux上的各种shell命令如awk,grep就能快速查询或者做一些简单的统计,当数据量的时候,而且程序本身还是分布式的时候,这种方式就有点费劲...2017-09-15 17:44:41 · 522 阅读 · 0 评论 -
理解elasticsearch的parent-child关系
前面文章介绍了,在es里面的几种数据组织关系,包括array[object],nested,以及今天要说的Parent-Child。Parent-Child与Nested非常类似,都可以用来处理一对多的关系,如果多对多的关系,那就拆分成一对多在处理。前面提到nested的缺点是对数据的更新需要reindex整个nested结构下的所有数据,所以注定了它的使用场景一定是查询多更新少的...2017-09-04 18:43:27 · 375 阅读 · 0 评论 -
简述ElasticSearch里面复杂关系数据的存储方式
在传统的数据库里面,对数据关系描述无外乎三种,一对一,一对多和多对多的关系,如果有关联关系的数据,通常我们在建表的时候会添加主外键来建立数据联系,然后在查询或者统计时候通过join来还原或者补全数据,最终得到我们需要的结果数据,那么转化到ElasticSearch里面,如何或者怎样来处理这些带有关系的数据。我们都知道ElasticSearch是一个NoSQL类型的数据库,本身是弱化...2017-08-18 20:10:26 · 884 阅读 · 0 评论 -
使用Java Rest Client操作Elasticsearch
Elasticsearch作为一个成熟的开源框架,对主流的多种客户端语言都支持,比如Java,JavaScript ,PHP,.Net,Python,Ruby,CURL当然还有一些小众的语言,虽然es官网没支持,但是个人开发者也有一些开源的,具体的可在es官网clients地址查看:[code="java"]https://www.elastic.co/guide/en/elast...2017-08-09 19:42:56 · 940 阅读 · 0 评论 -
如何为logstash+elasticsearch配置索引模板?
[size=medium]在使用logstash收集日志的时候,我们一般会使用logstash自带的动态索引模板,虽然无须我们做任何定制操作,就能把我们的日志数据推送到elasticsearch索引集群中,但是在我们查询的时候,就会发现,默认的索引模板常常把我们不需要分词的字段,给分词了,这样以来,我们的比较重要的聚合统计就不准确了:举个例子,假如有10台需要的监控的机器,他们的机器名...2016-04-12 19:36:56 · 2650 阅读 · 0 评论 -
ElasticSearch里面的偏好查询
在es查询的时候我们可以控制Preference,来完成特定shard或节点上的数据查询,默认情况下查询是随机的。假如现在我们有一份索引5个shard和3个副本,当一个查询请求过来的时候,查询操作如何执行,在没有使用路由的情况下5个shard的数据肯定都要查询,然后查询5个shard时候到底查的是主shard还是replia都是随机的。通过偏好查询,我们可以有更多的选择...2017-06-22 17:17:46 · 379 阅读 · 0 评论 -
ElasticSearch里面的路由功能介绍
在ElaticSearch里面,路由功能算是一个高级用法,大多数时候我们用的都是系统默认的路由功能,我们知道一个es索引可以分多个shard和每个shard又可以有多个replia,那么现在思考一个问题,我们添加进去的数据,是如何分布在各个shard上面的,而查询时候它是又怎么找到特定的数据呢。默认情况下,索引数据的分片规则,是下面的公式:[code="java"]...2017-06-21 18:17:15 · 136 阅读 · 0 评论 -
ElasticSearch之Java Api聚合分组实战
[size=medium]最近有个日志收集监控的项目采用的技术栈是ELK+JAVA+Spring,客户端语言使用的是Java,以后有机会的话可以试一下JavaScript+Nodejs的方式,非常轻量级的组合,只不过不太适合服务化的工程,Kibana充当可视化层,功能虽然非常强大和灵活,但是需要业务人员懂Lucene的查询语法和Kibana的Dashboard仪表盘自定义功能才能玩的转,所以K...2016-04-08 18:01:26 · 354 阅读 · 0 评论 -
如何在Spring中注入ElasticSearch实例
[size=medium]在企业级项目开发中,大多数公司都会集成Spring来简化开发成本,要使用Spring自然少不了一大堆需要依赖注入的Bean,通常情况下,我们会选择在spring的xml中,配置一些类的实例,比如连接池,或者配置文件初始化类,或者集成duboo时配置一些Service的引用等等。有些类的实例生成比较复杂,直接在xml中,是没法进行配置的,比如我想在Spring注...2016-04-06 18:44:35 · 784 阅读 · 0 评论 -
ElasticSearch里面一些小坑笔记
最近线上的es报了一个异常,核心信息如下:[code="java"]No mapping found for [k1.k2.time] in order to sort on[/code]我们的es索引是嵌套索引,上面的这个异常大致意思是说在某个shard里面嵌套结构里面k1.k2.time这个字段不存在数据,所以排序失败。我们知道在ES里面...2017-06-15 21:02:15 · 1521 阅读 · 0 评论 -
基于ELK+Beats进行系统监控
[size=medium](一)Beats是什么?Beats是elasticsearch公司开源的一款采集系统监控数据的代理agent,它可以发送不同类型的数据到elasticsearch中,也可以行将采集完的数据发送到logstash中转,然后在推送到elasticsearch中,目前还在发展中,与成熟的监控系统zabbix和ganglia相比就界面看起来爽了点,系统功能还是有点弱,...2016-03-04 17:24:27 · 525 阅读 · 0 评论 -
Logstash与Kafka集成
[size=medium]在ELKK的架构中,各个框架的角色分工如下:ElasticSearch1.7.2:数据存储+全文检索+聚合计算+服务端Logstasch2.2.2:日志收集与分发推送Kafka0.9.0.0:分布式高可靠消息队列+数据中转存储(失效期默认7天,可配置时间或大小来控制删除策略)Kibana4.1.2:全文检索+查询+图形化页面展示+客户端拓扑架构...2016-02-24 18:44:21 · 1164 阅读 · 0 评论 -
ElasticSearch嵌套模型基本操作
[img]http://dl2.iteye.com/upload/attachment/0123/3857/69b9e8f2-2cf0-3079-a966-9331ad1e91ae.jpg[/img]上篇介绍了ES嵌套模型使用场景和优缺点,本篇接着介绍关于ES嵌套的索引一些基本的操作,包括插入,追加,更新,删除,查询单独放下一篇文章介绍。首先来看下如何添加数据,上篇提到了我们项...2017-03-08 19:53:28 · 399 阅读 · 0 评论 -
ElasticSearch并发操作之乐观锁的使用
上篇介绍了关于ES嵌套索引的增删改,本篇就接着上篇主题继续深入聊一下,上篇的添加和更新操作,其实是不安全的,所有的数据库db系统都会存在并发问题像关系型数据库MySQL,Oracle,SQL Server默认采用的是悲观锁。在ElasticSearch中采用的乐观锁,下面先熟悉下什么是乐观锁和悲观锁:悲观锁(Pessimistic Lock), 顾名思义,就是很悲观,每次去拿数...2017-03-09 21:10:06 · 412 阅读 · 0 评论 -
Elasticsearch5.6.4集群搭建
本次搭建的是一个三节点的集群(一)es的安装(1)下载安装包[url]https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.6.4.tar.gz[/url](2)解压到指定目录(3)进入根目录,修改config/elasticsearch.yml文件,清空内容,添加如...2018-02-07 20:13:25 · 115 阅读 · 0 评论 -
elasticsearch里面bulk的用法
上篇文章介绍了在es里面批量读取数据的方法mget,本篇我们来看下关于批量写入的方法bulk。bulk api可以在单个请求中一次执行多个索引或者删除操作,使用这种方式可以极大的提升索引性能。bulk的语法格式是:[code="java"]````action and meta_data \noptional source \naction an...2018-04-09 20:23:21 · 1081 阅读 · 0 评论 -
elasticsearch里面的关于批量读取mget的用法
es的api除了提供了基本的curd操作外,还有两个针对批量的操作分别是:1,批量的读取操作(mget)2,批量的写入操作(bulk)本篇文章先介绍mget的用法Multi Get api 简称(mget)它允许我们一次get大量的document,与get单条数据的api get方法类似,mget查询是基于index,type(可选),id三个条件...2018-04-04 16:01:36 · 314 阅读 · 0 评论 -
elasticsearch的查询流程分析
我们都知道es是一个分布式的存储和检索系统,在存储的时候默认是根据每条记录的_id字段做路由分发的,这意味着es服务端是准确知道每个document分布在那个shard上的。相对比于CURD上操作,search一个比较复杂的执行模式,因为我们不知道那些document会被匹配到,任何一个shard上都有可能,所以一个search请求必须查询一个索引或多个索引里面的所有shard才能...2018-04-02 20:29:24 · 305 阅读 · 0 评论 -
如何在elasticsearch里面使用深度分页功能
前面的文章提到过es默认的from+size的分页方式返回的结果数据集不能超过1万点,超过之后返回的数据越多性能就越低。这是因为es要计算相似度排名,需要排序整个整个结果集,假设我们有一个index它有5个shard,现在要读取1000到1010之间的这10条数据,es内部会在每个shard上读取1010条数据,然后返回给计算节点,这里有朋友可能问为啥不是10条数据而是1010条呢...2018-03-28 18:13:46 · 408 阅读 · 0 评论 -
如何在Elasticsearch里面使用索引别名
在elasticsearch里面给index起一个aliases(别名)能非常优雅的解决两个索引无缝切换的问题,这个功能在某些场景下非常使用。比如电商的核心商品索引库,除了实时增量数据外,每天都要重建一遍索引,避免index里面的数据和db里面的数据不一致,因为index分shard了,所以要一个一个的shard做全量替换,直到所有的shard替换完毕,才能宣布重建成功。整个过程其...2018-03-27 20:37:39 · 1425 阅读 · 0 评论 -
如何优雅的全量读取Elasticsearch索引里面的数据
### (一)scroll的介绍有时候我们可能想要读取整个es索引的数据或者其中的大部分数据,来重建索引或者加工数据,相信大多数人都会说这很简单啊直接用from+size就能搞定,但实际情况是from+size的分页方法不适合用于这种全量数据的抽取,越到后面这种方法的性能就越低,这也是es里面为什么限制了单次查询结果的数据不能超过1万条数据的原因。es里面提供了scroll...2018-03-26 20:27:43 · 2664 阅读 · 0 评论 -
关于elaticsearch中更新数据的几种方式
作为一个成熟的框架,Elasticsearch里面提供了丰富的操作数据的api,本篇我们就来学习一下在es中更新数据的几种方式。(一)更新文档(1)部分更新:java api:[code="java"]````` HashMap data=new HashMap(); data.put("name","woshigcs")...2018-03-21 19:00:43 · 1083 阅读 · 0 评论 -
Elasticsearch里面的segment合并
通过前面的文章,我们已经知道在elasticsearch中每个shard每隔1秒都会refresh一次,每次refresh都会生成一个新的segment,按照这个速度过不了多久segment的数量就会爆炸,所以存在太多的segment是一个大问题,因为每一个segment都会占用文件句柄,内存资源,cpu资源,更加重要的是每一个搜索请求都必须访问每一个segment,这就意味着存在的s...2018-03-20 17:50:33 · 2119 阅读 · 0 评论 -
Elasticsearch如何保证数据不丢失?
上篇文章提到过,在elasticsearch和磁盘之间还有一层cache也就是filesystem cache,大部分新增或者修改,删除的数据都在这层cache中,如果没有flush操作,那么就不能100%保证系统的数据不会丢失,比如突然断电或者机器宕机了,但实际情况是es中默认是30分钟才flush一次磁盘,这么长的时间内,如果发生不可控的故障,那么是不是必定会丢失数据呢?很显然...2018-03-19 20:52:46 · 1776 阅读 · 1 评论 -
为什么说Elasticsearch搜索是近实时的?
通过前面两篇文章的介绍,我们大概已经知道了Elasticsearch处理数据的流程,其中在Elasticsearch和磁盘之间还有一层称为FileSystem Cache的系统缓存,正是由于这层cache的存在才使得es能够拥有更快搜索响应能力。我们都知道一个index是由若干个segment组成,随着每个segment的不断增长,我们索引一条数据后可能要经过分钟级别的延迟才能...2018-03-16 19:41:54 · 1364 阅读 · 0 评论 -
Elasticsearch如何动态维护一个不可变的倒排索引
上一篇文章中介绍了Elasticsearch中是如何搜索文本的,同时也简述了在es里面索引数据结构的特点不可变性。 索引不可变性的缺点限制了单个索引存储的最大数据量以及更新的频次,所以es面临的问题是如何解决倒排索引不可更新的特点而同时仍然保持不可变特性带来的好处。 答案就是使用多个索引 代替原来的每次重写整个索引,es里面采用方式是增加新的索引来反...2018-03-15 21:34:35 · 809 阅读 · 0 评论 -
Elasticsearch如何检索数据
我们都知道Elasticsearch是一个全文检索引擎,那么它是如何实现快速的检索呢?传统的数据库给每个字段都存储成一个单个值,对于全文检索而言,这样的存储是低效的。举个例子,我有一个大文本字段,存到数据库里面只能是一个值,如果想要检索这个大文本字段里面的任何一个词,数据库如何实现? 只能通过like模糊查询来实现,先不说性能低,这对于一个搜索引擎是远远不够的。针对上面数据库的不足...2018-03-14 20:11:02 · 206 阅读 · 0 评论 -
如何备份ElasticSearch索引数据到HDFS上
在ElasticSearch里面备份策略已经比较成熟了目前在ES5.x中备份支持的存储方式有如下几种:[code="java"]````fs //本地挂载的盘url //网络协议存储支持http,https,ftprepository-s3 //亚马逊repository-hdfs //HDFSrepository...2018-02-09 18:19:47 · 542 阅读 · 0 评论 -
Kakfa集群搭建
[size=medium]先来整体熟悉下Kafka的一些概念和架构(一)什么是Kafka?Kafka是由LinkedIn开发并开源的一个分布式消息系统,因其分布式和高吞吐率被广泛应用,现在已经在Hadoop和Spark等大数据的生态系统中成为一个必不可少的生态组件,可与各种计算模型,如离线计算,实时计算,流计算对接数据。(二)为什么要用Kafka?1,以时间复杂...2016-02-23 15:36:54 · 148 阅读 · 0 评论 -
关于Elasticsearch里面聚合group的坑
原来知道Elasticsearch在分组聚合时有一些坑但没有细究,今天又看了遍顺便做个笔记和大家分享一下。我们都知道Elasticsearch是一个分布式的搜索引擎,每个索引都可以有多个分片,用来将一份大索引的数据切分成多个小的物理索引,解决单个索引数据量过大导致的性能问题,另外每个shard还可以配置多个副本,来保证高可靠以及更好的抗并发的能力。将一个索引切分成多个shard,大...2017-05-12 20:32:34 · 3087 阅读 · 1 评论 -
ElasticSearch的一些删除用法笔记
前面关于es的文章基本上都是添加,修改,更新操作,删除的例子仅仅有根据id删除单条数据的。但作为一个重度使用es的用户,我们肯定得了解所有相关删除操作的命令,才能更加方便的使用和维护es。通常情况下,删除操作是非常敏感的,这一点不论在关系型数据库,还是nosql数据库都是同样的道理。在es里面也是如此,虽然es大部分时候都是读多写少的系统。在es里面常用的删...2017-05-06 16:26:03 · 945 阅读 · 0 评论 -
海量可视化日志分析平台之ELK搭建
ELK是什么?E=ElasticSearch ,一款基于的Lucene的分布式搜索引擎,我们熟悉的github,就是由ElastiSearch提供的搜索,据传已经有10TB+的数据量。L=LogStash , 一款分布式日志收集系统,支持多输入源,并内置一些过滤操作,支持多输入元K=Kibana , 一款配合ElasticSearch的web可视化界面,内置非常各种查询,聚合操作,并拥...2015-10-21 14:30:33 · 126 阅读 · 0 评论 -
Logstash2.3.4趟坑之集成Redis哨兵模式
[img]http://dl2.iteye.com/upload/attachment/0119/6165/90591442-ca5a-33f7-9baa-e547a1aeee24.png[/img][size=medium]最新在使用Lostash2.3.4收集数据的时候,在读取redis数据的时候,报了如下的一个异常:异常如下[/size][code="java"]Pipe...2016-08-26 17:11:48 · 219 阅读 · 0 评论 -
ElasticSearch2.3.4之Java Api调用例子
[img]http://dl2.iteye.com/upload/attachment/0119/3096/ea0c53ee-b56d-39b2-9eea-89d5bef2fe01.jpg[/img][code="java"]package com.curd.es;import org.elasticsearch.action.search.SearchRequestBuil...2016-08-11 19:26:22 · 250 阅读 · 0 评论 -
手动从零使用ELK构建一套搜索服务
[b][size=large]由于Iteye不支持MarkDown语法写的文章,请大家点击下面链接查看我放在开源中国上的文章 :D [url]http://my.oschina.net/u/1027043/blog/719749[/url][/b][/size]...2016-07-28 19:54:37 · 100 阅读 · 0 评论 -
Lucene/Solr/ElasticSearch搜索问题案例分析
[img]http://dl2.iteye.com/upload/attachment/0118/2222/133a7e24-46e8-3060-9018-bfe45e2381cd.jpg[/img][size=medium]最近收集的两个搜索的case,如下:案例一:使用 A关键词:“中国诚通控股公司”搜索,不能搜到 B结果“中国诚通控股集团有限公司”从关键词...2016-06-23 18:08:28 · 177 阅读 · 0 评论 -
Lucene+Solr+ElasticSearch查询匹配优化
[size=medium]当我们在处理搜索业务时候,需求往往是灵活多变的,有时候我们需要精确匹配,有时候我们又需要全文检索,而有时候,我们又想匹配度高而且还能全文检索,这似乎是精确匹配和模糊匹配一个妥协的策略,没错这就是搜索引擎出现的目的,以往的数据库是没法解决这种问题的,数据库只能回答有,没有,存在,不存在,并不能在有和没有之间做一个完美的妥协,比如说能把最匹配最相关的结果放在topN,仅靠...2016-06-01 19:37:24 · 264 阅读 · 0 评论 -
如何实现Solr自定义评分查询
[size=medium](一)背景介绍大多数时候我们使用lucene/solr/elasticsearch自带的评分查询都是没问题的,当然这也仅仅限于简单的业务或者对搜索排名不敏感的场景中,假设业务方要求有若干业务因子要干扰到排名,同时还不能放弃框架本身的文本相似度评分,那么应该怎么做呢? 这种场景尤其是在电商类的一些垂直搜索中体现比较明显,比如,新商品加分,口碑好的加分...2016-05-12 17:49:50 · 901 阅读 · 0 评论