ELK简单问答

来源:互联网 发布:用户和数据库的接口 编辑:程序博客网 时间:2024/05/23 14:22
ElasticSearch是一个支持分布式存储以及全文索引的数据库,可用于存储非结构化数据并能快速检索关键字。比较适用于存储日志记录。

问题1:ElasticSearch是如何分布式存储数据的?

ElasticSearch会从所有节点中推举出一个Master节点,Master节点负责创建或者删除索引,添加节点到集群或从集群删除节点。master节点不参与文档层面的变更和搜索工作,降低了master的负载。可以随时添加多个节点进入集群满足高并发的查找要求。

ElasticSearch中一个索引对应一个或者多个分片,而每个分片必定有一个主分片和一个或者多个从分片。分片可以存储在任意一个服务器节点上。当集群扩充节点时,ElasticSearch会根据集群的负载情况将分片进行转移以免出现单个节点负载过高的问题。

当用户的请求索引A到达ElasticSearch集群中的某个节点Node_1时,该节点Node_1如果存有请求索引A的数据则直接返回给用户;如果没有索引A的数据,则需要查询Master节点索引A的具体存放节点Node_2,然后将请求转发到Node_2中,当Node_2将数据查询到后返回给Node_1,而Node_1再将数据发给用户。

问题2:ElasticSearch是如何做到全文索引并支持快速检索数据的?


ElasticSearch使用了建立倒排索引的方案解决搜索问题。比如向ES中添加一条语句”hello world boy“;那么ES会将该语句拆分为三个单词,并为每个单词建立一个索引,当用户查找HELLO这个单词的时候,直接查找HELLO索引中的所有数据返回即可,目前很多搜索引擎都使用了倒排索引的方式。



Logstash是一个日志处理管道,可以从不同渠道收集各种格式的统计数据,并按照预定义的格式将日志数据转化为json数据存储到ElasticSearch中。

问题1:Logstash可以从远程获取数据么,可以直接读取关系型数据库中的数据么?

问题2:Logstash的日志预定义格式是怎么样的?




Kibana是一个基于ElasticSearch的数据图形化、图表化显示的工具,可以将ElasticSearch中的数据很好地图形化显示出来。

问题1:随着数据量的不断增大,检索一年前到现在的数据会有多大的延迟,有没有解决方案?


ElasticSearch横向扩展可以解决部分查询压力,每个分片有多个从分片,同时查询从分片也可以减少对单一分片的查询压力。如果要查找数据量过多,仍然会出现大量的卡顿情况,因此ELK做数据监控很好用,大概监控一周内的数据量不会有太大问题,但是如果要统计查询一年之久的数据也会够呛。

问题2:搜索规则是怎样的?

ES中分为查询和过滤,两者没有太大的区别,查询会返回结果的相关性评分并根据相关性评分进行排序,而过滤不会,使用原则是如果需要相关性评分则使用查询,剩下的都使用过滤。效率上过滤比查询稍微好点。

使用结构化查询最重要的有两点:分页和多条件查询。

分页使用from和size两个参数,from控制起点,size控制数量。query为查询,filter为过滤关键字。

通过bool条件可以组织多条件查询,包括must,must_not,should。

must:文档必须匹配条件。相当于AND条件。

must_not:过滤文档必须满足条件的记录。相当于NOT条件

should:匹配一个以上的条件。相当于OR条件


0 0
原创粉丝点击