05 2017 档案

摘要:功能: 3.1:采集服务器日志 Rsyslog是CentOS6.X自带的一款系统日志工具: 对于ELK stack来说,我们需要实时的知道当前系统运行的情况,如果当前系统出现了问题,能够及时发现,以免影响线上实例 Rsyslog配置文件介绍:/etc/rsyslog.conf文件: 日志级别: 本项 阅读全文
posted @ 2017-05-23 00:35 niutao 阅读(567) 评论(0) 推荐(0) 编辑
摘要:output插件是经过了input,然后过滤结构化数据之后,接下来我们需要借助output传到我们想传到的地方.output相当于一个输出管道。 2.3.1: 将采集数据标准输出到控制台 配置示例: Codec 来自 Coder/decoder 两个单词的首字母缩写,Logstash 不只是一个in 阅读全文
posted @ 2017-05-23 00:25 niutao 阅读(6013) 评论(0) 推荐(0) 编辑
摘要:Logstash之所以强悍的主要原因是filter插件;通过过滤器的各种组合可以得到我们想要的结构化数据 1:grok正则表达式 grok**正则表达式是logstash非常重要的一个环节**;可以通过grok非常方便的将数据拆分和索引 语法格式: (?<name>pattern) ?<name>表 阅读全文
posted @ 2017-05-23 00:23 niutao 阅读(1075) 评论(0) 推荐(0) 编辑
摘要:1:stdin标准输入和stdout标准输出 首先执行命令: 程序启动之后输入:hello logstash Logsrtash含有两个非常重要的插件,input与output; 我们上面输入输出hello logstash的时候就是基于这两个插件完成; 一个基础的输入输出插件: bin/logst 阅读全文
posted @ 2017-05-23 00:14 niutao 阅读(1410) 评论(0) 推荐(0) 编辑
摘要:logstash就是一个具备实时数据传输能力的管道,负责将数据信息从管道的输入端传输到管道的输出端;与此同时这根管道还可以让你根据自己的需求在中间加上滤网,Logstash提供里很多功能强大的滤网以满足你的各种应用场景 1):解压 2):安装x-pack 3):修改配置文件 vim logstash 阅读全文
posted @ 2017-05-23 00:13 niutao 阅读(189) 评论(0) 推荐(0) 编辑
摘要:1):修改elasticsearch.yml 2):重启es 3):创建一个名字为:errors_email 的watcher,定时去扫描相关信息 4):测试,向logs索引中输入错误信息 邮件报警功能按照每10s检查一遍logs的索引,查看里面的错误信息是否大于0,如果大于0则进行报警; 为了验证 阅读全文
posted @ 2017-05-23 00:12 niutao 阅读(932) 评论(0) 推荐(0) 编辑
摘要:1.3.1:建立索引 索引index 这个参数可以控制字段应该怎样建索引,怎样查询。它有以下三个可用值: 字段解释: 日志数据集需要映射,通过将 **geo_point**``类型应用于这些字段,将日志中的 latitude(纬度)/longitude(纬度)对标记为地理位置。 使用以下命令建立日志 阅读全文
posted @ 2017-05-23 00:10 niutao 阅读(2040) 评论(0) 推荐(0) 编辑
摘要:1.1:kibana搭建 kibana只需要在一台机器安装即可 1):解压 tar -zxvf kibana-5.5.2-linux-x86_64.tar.gz -C /home/angel/servers/ 2):修改kibana中的config/ kibana.yml 文件 Vim /home/ 阅读全文
posted @ 2017-05-23 00:04 niutao 阅读(1612) 评论(0) 推荐(0) 编辑
摘要:因为只要索引处于open状态,就会占用内存+磁盘; 如果将索引close,只会占用磁盘 Curl -XPOST ‘hadoop01:9200/index/_close’ 在es中删除文档,数据不会马上在硬盘上删除,而是在es索引中产生一个.del 文件; 并且es在检索过程中也会把.del文件进行检 阅读全文
posted @ 2017-05-22 23:54 niutao 阅读(4771) 评论(0) 推荐(0) 编辑
摘要:Es是基于lucene构建的搜索引擎;lucene查询的快是因为倒排索引; Es中经常会看到segments_q这样的文件,那么这个文件就是一个lucene的倒排索引; 倒排索引是由**词典 (Term Dictionary)和文档列表(Postings List)组成,lucene会在词典上做一层 阅读全文
posted @ 2017-05-22 23:53 niutao 阅读(730) 评论(0) 推荐(0) 编辑
摘要:适当的提升分片数量可以提升建立索引的速度; 一般情况下:一个索引库建立5-20个分片是最合适的; 注意:如果分片过少或者过多,都会降低检索的速度 分片数过多会导致: 分片数太少导致: 单个分片索引过大,降低整体的检索速率 建议: 将单个分片存储存储索引数据的大小控制在20G左右;绝对不要超过50G 阅读全文
posted @ 2017-05-22 23:50 niutao 阅读(6815) 评论(0) 推荐(0) 编辑
摘要:多副本可以提升检索的能力,但是如果副本数量太多,插入数据的时候容易出现卡顿现象; 因为主分片要把数据同步给所有的副本,所以建议副本数量最好是1-2个; Es在索引数据的时候,如果存在副本,那么主分片会将数据同时同步到副本; 如果当前插入大量数据,那么会对es集群造成一定的压力,所以在插入大量数据前, 阅读全文
posted @ 2017-05-22 23:50 niutao 阅读(4151) 评论(0) 推荐(1) 编辑
摘要:1、将最小堆大小(Xms)和最大堆大小(Xmx)设置为彼此相等 防止内存抖动 2:给多大的堆内存? 给ES的内存配置不是越大越好,建议不能超过32GB,不同jdk版本最大边界值是不同的,对于32位小于32G JVM才采用内存对象指针压缩技术,不然对象指针需要占用很大的内存; 一旦你越过那个神奇的30 阅读全文
posted @ 2017-05-22 23:49 niutao 阅读(4478) 评论(0) 推荐(0) 编辑
摘要:在实际的生产中,如果要插入大批量数据的时候需要使用多个索引库,如果我们还是手工指定每个索引的配置信息settings和mappings,是非常耗时的; 针对这种情况,es有index template可以解决上面的问题; 索引可使用预定义的模板进行创建,这个模板称作Index templates。模 阅读全文
posted @ 2017-05-22 23:48 niutao 阅读(627) 评论(0) 推荐(0) 编辑
摘要:3.1、分片查询方式 当前的图片中有5个主分片,5个副本;这对于es的集群来说,这种配置是非常常见的; 但是问题来了,当我们的客户端做查询的时候,程序会向主分片发送请求还是副本发送请求? 还是说直接去集群上随机找一台机器查询,还是在这个机器里面在随机的找到分片和副本查询? 【注意】: 默认情况下是随 阅读全文
posted @ 2017-05-22 23:47 niutao 阅读(1066) 评论(0) 推荐(0) 编辑
摘要:一个正常es集群中只有一个主节点,主节点负责管理整个集群,集群的所有节点都会选择同一个节点作为主节点;所以无论访问那个节点都可以查看集群的状态信息。 而脑裂问题的出现就是因为从节点在选择主节点上出现分歧导致一个集群出现多个主节点从而使集群分裂,使得集群处于异常状态 这样的脑裂状态直接让节点失去了集群 阅读全文
posted @ 2017-05-22 23:47 niutao 阅读(1176) 评论(0) 推荐(0) 编辑
摘要:1:需求: 解决海量数据的存储,并且能够实现海量数据的秒级查询 Hbase是典型的nosql,是一种构建在HDFS之上的分布式、面向列的存储系统,在需要的时候可以进行实时的大规模数据集的读写操作;但是hbase的语法非常固话,即便在hbase之上嫁接了phoneix在应对复杂查询的时候,仍然力不从心 阅读全文
posted @ 2017-05-22 23:44 niutao 阅读(4394) 评论(1) 推荐(0) 编辑
摘要:构建数据: 1:分组求count 计算每个球队的球员数量: select team, count(*) as player_count from player group by team; 2:Group by 多个字段 计算每个球队每个位置的球员数 select team, position, c 阅读全文
posted @ 2017-05-22 23:36 niutao 阅读(574) 评论(0) 推荐(0) 编辑
摘要:我们已经介绍了如何使用不同的条件查询来构建查询并搜索数据。我们还熟知了评分,它告诉我们在给定的查询中,哪些文档更重要以及查询文本如何影响排序。然而,有时我们可能要在不影响最后分数的情况下,选择索引中的某个子集,这就要使用过滤器。 如果可以,应该尽可能使用过滤器。过滤器不影响评分,而得分计算让搜索变得 阅读全文
posted @ 2017-05-22 23:35 niutao 阅读(1724) 评论(0) 推荐(1) 编辑
摘要:随着应用程序的增长,提高搜索质量的需求也进一步增大。我们把它叫做搜索体验。我们需要知道什么对用户更重要,关注用户如何使用搜索功能。这导致不同的结论,例如,有些文档比其他的更重要,或特定查询需强调一个字段而弱化其他字段。这就是可以用到加权的地方。 进一步说搜索体验,我们更希望检索出来的数据是最想得到的 阅读全文
posted @ 2017-05-22 23:34 niutao 阅读(4030) 评论(0) 推荐(0) 编辑
摘要:代码实现: 编写Article实体类: 阅读全文
posted @ 2017-05-22 23:32 niutao 阅读(1072) 评论(0) 推荐(0) 编辑
摘要:按照一般的查询流程来说,如果我想查询前10条数据: · 1 客户端请求发给某个节点 · 2 节点转发给个个分片,查询每个分片上的前10条 · 3 结果返回给节点,整合数据,提取前10条 · 4 返回给请求客户端 那么当我想要查询第10条到第20条的数据该怎么办呢?这个时候就用到分页查询了。 浅分页可 阅读全文
posted @ 2017-05-22 23:30 niutao 阅读(8221) 评论(3) 推荐(1) 编辑
摘要:插入样例数据: 插入样例数据: 1:查询所有 matchAllQuery()匹配所有文件 match_all查询是Elasticsearch中最简单的查询之一。它使我们能够匹配索引中的所有文件。 2:解析查询字符串 相比其他可用的查询,query_string查询支持全部的Apache Lucene 阅读全文
posted @ 2017-05-22 23:29 niutao 阅读(29257) 评论(0) 推荐(0) 编辑
摘要:1.7.1: 创建索引 默认创建好索引,mappings为空 1.7.2: 删除索引 1.7.3:索引的映射操作 为什么要进行手动的映射? 如果你习惯SQL数据库,或许知道,在存入数据前,需要创建模式来描述数据(schmal);尽管elasticsearch是一个无模式的搜索引擎,可以即时算出数据结 阅读全文
posted @ 2017-05-22 23:26 niutao 阅读(5233) 评论(1) 推荐(1) 编辑
摘要:删除文档操作 2:通过查询的方式删除 往往生产的需求是能够类似mysql一样,通过查询出符合条件的数据进行删除: 比如mysql: 那么es也是支持这种操作的:DeleteByQueryAction允许检索一个索引,把匹配出来的字段删除 3: 优化-通过查询进行删除 上面的查询删除,在实际的生产中会 阅读全文
posted @ 2017-05-22 23:22 niutao 阅读(4025) 评论(0) 推荐(1) 编辑
摘要:之前的更新文档操作 1:方式1 2:方式2 3:方式3 阅读全文
posted @ 2017-05-22 23:19 niutao 阅读(508) 评论(0) 推荐(0) 编辑
摘要:1:搜索文档数据(单个索引) 2:搜索文档数据(多个索引) 阅读全文
posted @ 2017-05-22 23:17 niutao 阅读(670) 评论(0) 推荐(0) 编辑
摘要:插入文档操作的一种优化,因为每次插入单条文档,都会向es中发送请求。然后es执行在返回结果; 如果有大批量的文档数据需要插入,这个时候单挑插入操作显然是不合理的; 之前学习的命令行批量执行方式: 1:普通的批量插入方式 这种方式也会有问题,比如在批量插入的时候,多大数据量插入一次,多少条插入一次,多 阅读全文
posted @ 2017-05-22 23:16 niutao 阅读(13207) 评论(0) 推荐(0) 编辑
摘要:4方式: 1: 使用JSON字符串创建 2:使用Map集合 3:使用第三方库来序列化 4:使用内置的帮助器jsonBuilder() 去elasticsearch的head页面查看: 阅读全文
posted @ 2017-05-22 23:14 niutao 阅读(4145) 评论(0) 推荐(0) 编辑
摘要:Elasticsearch 的 Java 客户端非常强大;它可以建立一个嵌入式实例并在必要时运行管理任务。 运行一个 Java 应用程序和 Elasticsearch 时,有两种操作模式可供使用。该应用程序可在 Elasticsearch 集群中扮演更加主动或更加被动的角色。在更加主动的情况下(称为 阅读全文
posted @ 2017-05-22 23:11 niutao 阅读(4463) 评论(1) 推荐(0) 编辑
摘要:1、 下载tomcat,作为远程词库的容器 , 需要在tomcat中配置词库 2、测试tomcat启动后,是否能够访问 3、 更改ik的配置:IKAnalyzer.cfg.xml 4、 更新hot.dic之后会发现es中输出如下信息: 阅读全文
posted @ 2017-05-22 23:08 niutao 阅读(2443) 评论(0) 推荐(0) 编辑
摘要:Es集群内部是有一个约定是用来约束我们的写操作的,就是“一致性”; 也就是说:新建、索引、删除这些操作都是写操作,他们都有一个大前提: 当前的分片副本处于活跃状态的数量 >= int( (primary + number_of_replicas) / 2 ) + 1 比如当前的副本有3个副本,那么规 阅读全文
posted @ 2017-05-22 23:08 niutao 阅读(1503) 评论(0) 推荐(1) 编辑
摘要:1:默认的分析器-- standard 使用默认的分词器 这就是默认的分词器,但是默认的分析器有时候在生产环境会出现问题,比如: curl -XPUT 'http://hadoop01:9200/test/class/1' -d '{"title" : "我爱中国"}' 去hadoop01:9100 阅读全文
posted @ 2017-05-22 23:06 niutao 阅读(1247) 评论(0) 推荐(0) 编辑
摘要:Elasticsearch这种全文搜索引擎,会用某种算法对建立的文档进行分析,从文档中提取出有效信息(Token) 对于es来说,有内置的分析器(Analyzer)和分词器(Tokenizer) 1:分析器 ES内置分析器 测试simple Analyzer: custom(自定义)分析器接受以下的 阅读全文
posted @ 2017-05-22 22:59 niutao 阅读(3074) 评论(0) 推荐(0) 编辑
摘要:在检索出数据之后,我们观察有一个_source这样的字段, 【注意】_source字段在我们检索时非常重要; Es除了将数据保存在倒排索引中,另外还有一分原始文档 原始文档就是存储在_source中的; 其实我们在elasticsearch中搜索文档,查看文档的内容就是_source中的内容 我们可 阅读全文
posted @ 2017-05-22 22:57 niutao 阅读(3521) 评论(0) 推荐(0) 编辑
摘要:ES的聚合: metric很像SQL中的avg、max、min等方法,而bucket就有点类似group by 导入数据汽车销售数据: 1:Bucket 1.1:按时间统计(date_histogram时间直方图聚合) date_histogram是专门用来给时间格式的数据进行聚合的 时间字段sol 阅读全文
posted @ 2017-05-22 22:54 niutao 阅读(567) 评论(0) 推荐(0) 编辑
摘要:Elasticsearch 的功能之一就是搜索,搜索主要分为两种类型,结构化搜索和全文搜索。结构化搜索是指有关查询那些具有内在结构数据的过程。比如日期、时间和数字都是结构化的:它们有精确的格式,我们可以对这些格式进行逻辑操作。比较常见的操作包括比较数字或时间的范围,或判定两个值的大小。 导入学习数据 阅读全文
posted @ 2017-05-22 22:49 niutao 阅读(936) 评论(0) 推荐(0) 编辑
摘要:导入测试数据: 1:size+from浅分页 按照一般的查询流程来说,如果我想查询前10条数据: · 1 客户端请求发给某个节点 · 2 节点转发给个个分片,查询每个分片上的前10条 · 3 结果返回给节点,整合数据,提取前10条 · 4 返回给请求客户端 那么当我想要查询第10条到第20条的数据该 阅读全文
posted @ 2017-05-22 22:48 niutao 阅读(1379) 评论(0) 推荐(0) 编辑
摘要:1:一条数据是如何落地到对应的shard上的 当索引一个文档的时候,文档会被存储到一个主分片中。 Elasticsearch 如何知道一个文档应该存放到哪个分片中呢? 首先这肯定不会是随机的,否则将来要获取文档的时候我们就不知道从何处寻找了。实际上,这个过程是根据下面这个算法决定的: routing 阅读全文
posted @ 2017-05-22 22:46 niutao 阅读(2056) 评论(0) 推荐(0) 编辑
摘要:1:索引(创建或者删除)一个文档 首先:发送一个索引或者删除的请求给node1 其次:node1接收到请求之后,会根据请求中携带的参数“文档id”判断出该文档应该存储在具体哪一个shard中 shard = hash(routing) % number_of_primary_shards ,比如sh 阅读全文
posted @ 2017-05-22 22:43 niutao 阅读(3022) 评论(0) 推荐(0) 编辑
摘要:1:批量查询操作 1):插入测试数据 Elasticsearch是分布式的,在查询的时候不可避免的要夸网络,如果大量的单独的请求,会造成很大的网络延迟和开销; ES的查询方式: 2):批量查询 如果索引相同的话,可以简写: 如果类型也相同的话,可以直接简写成: 2:批量执行(bulk) 与 mget 阅读全文
posted @ 2017-05-22 22:40 niutao 阅读(1949) 评论(0) 推荐(0) 编辑
摘要:1:乐观锁控制 ES是分布式的,也是异步并发的,我们的复制请求是并行发送的;这就意味着请求到达目的地的顺序是不可控制的,是乱序的; 如果是乱序的方式,很有可能出现这样的一个问题,新version的文档被旧version的文档覆盖掉—-数据丢失,或者直接抛异常; 所以在分布式异步并发场景中,需要一种方 阅读全文
posted @ 2017-05-22 22:37 niutao 阅读(7405) 评论(0) 推荐(0) 编辑
摘要:5.7.1:更新整个文档 ES中并不存在所谓的更新操作,而是用新文档替换旧文档; 在内部,Elasticsearch已经标记旧文档为删除并添加了一个完整的新文档并建立索引。旧版本文档不会立即消失 ,但你也不能去访问它 5.7.2:局部更新[partial _update] 上面介绍的是更新整个文档, 阅读全文
posted @ 2017-05-22 22:28 niutao 阅读(7658) 评论(1) 推荐(0) 编辑
摘要:实际生产,对于文档的操作,偶尔会遇到这种问题: 某一个字段的类型不符合后期的业务了,但是当前的索引已经创建了,我们知道es在字段的mapping建立后就不可再次修改mapping的值 比如: 1): 2): 当前的times是text类型,但是后期想使用时间去检索数据是不可能的了,那么在实际的生产中 阅读全文
posted @ 2017-05-22 22:27 niutao 阅读(714) 评论(0) 推荐(1) 编辑
摘要:1:增加别名 为索引school添加一个别名alias1: 1.1:创建索引 1.2:添加别名 2:查询别名 查询某个index下的别名: 3:删除别名 4:修改别名 es没有修改别名的操作,只能先删除后添加 阅读全文
posted @ 2017-05-22 22:26 niutao 阅读(18246) 评论(0) 推荐(0) 编辑
摘要:1:索引的映射管理 elasticsearch中的文档等价于java中的对象 , 那么在java对象中有字段(比如string、int、long等); 同理在elasticsearch索引中的具体字段也是有类型的; 第一步:默认的插入操作: 这种操作并没有指定字段类型,那么elasticsearch 阅读全文
posted @ 2017-05-22 22:24 niutao 阅读(1516) 评论(0) 推荐(0) 编辑
摘要:1:创建索引 创建索引的时候可以通过number_of_shards和number_of_replicas来指定当前索引的分片和副本数量; 可以通过检索当前集群的索引是否存在(head)来判断当前索引是否插入成功 返回值为200表示存在,404表示不存在 2:删除索引 删除索引可以通过指定索引的名称 阅读全文
posted @ 2017-05-22 22:22 niutao 阅读(2938) 评论(0) 推荐(0) 编辑
摘要:Kibana 是一个开源的分析和可视化平台,旨在与 Elasticsearch 合作。Kibana 提供搜索、查看和与存储在 Elasticsearch 索引中的数据进行交互的功能。开发者或运维人员可以轻松地执行高级数据分析,并在各种图表、表格和地图中可视化数据。(注意,既然是可视化的平台,因此只需 阅读全文
posted @ 2017-05-22 22:18 niutao 阅读(247) 评论(0) 推荐(0) 编辑
摘要:文档介绍: 首先要讲什么是文档,我们中大多是java程序员,java是面向对象的,那么在elasticsearch看来:对象和文档是等价的。只不过这个对象是可以被序列化成key-value形式的json串 文档元数据: 文档是用来以k-v的形式存储数据的,文档的组成不单单是有数据的,还有元数据; 其 阅读全文
posted @ 2017-05-22 22:16 niutao 阅读(5219) 评论(0) 推荐(0) 编辑
摘要:在kibana提供的界面上进行操作。 3.4.1、使用match_all做查询 问题:通过match_all匹配后,会把所有的数据检索出来,但是往往真正的业务需求并非要找全部的数据,而是检索出自己想要的;并且对于es集群来说,直接检索全部的数据,很容易造成GC现象。所以,我们要学会如何进行高效的检索 阅读全文
posted @ 2017-05-22 22:00 niutao 阅读(3755) 评论(0) 推荐(0) 编辑
摘要:curl是利用URL语法在命令行方式下工作的开源文件传输工具,使用curl可以简单实现常见的get/post请求。简单的认为是可以在命令行下面访问url的一个工具。在centos的默认库里面是有curl工具的,如果没有请yum安装即可。 curl 3.1.1 创建索引 3.1.2 插入文档 前面的命 阅读全文
posted @ 2017-05-22 21:58 niutao 阅读(2287) 评论(0) 推荐(0) 编辑
摘要:2.4.1 安装nodejs Node.js是一个基于 Chrome V8 引擎的 JavaScript 运行环境。 Node.js是一个Javascript运行环境(runtime environment),发布于2009年5月,由Ryan Dahl开发,实质是对Chrome V8引擎进行了封装。 阅读全文
posted @ 2017-05-22 21:54 niutao 阅读(250) 评论(0) 推荐(0) 编辑
摘要:2.1:创建用户: (elasticsearch不能使用root用户) 2.2:解压安装包 2.3:修改配置文件 2.3.1:修改内存参数: vim /config/jvm.options 2.3.2:修改elasticsearch的集群参数 vim /config/elasticsearch.ym 阅读全文
posted @ 2017-05-22 21:53 niutao 阅读(345) 评论(0) 推荐(0) 编辑
摘要:1、ELK 1.1 集中式日志系统 日志,对于任何系统来说都是及其重要的组成部分。在计算机系统里面,更是如此。但是由于现在的计算机系统大多比较复杂,很多系统都不是在一个地方,甚至都是跨国界的;即使是在一个地方的系统,也有不同的来源,比如,操作系统,应用服务,业务逻辑等等。他们都在不停产生各种各样的日 阅读全文
posted @ 2017-05-22 21:50 niutao 阅读(328) 评论(0) 推荐(0) 编辑