一、技术栈选型
我们选择ELK Stack,也就是Elasticsearch、Kibana、Beats和Logstash的简称。其中Elasticsearch是
Elastic Stack关于分布式搜索和分析引擎的核心部分;Logstash和Beats有助于收集、聚合和丰富数据并且存储在Elasticsearch中;Kibana可以进行交互方式的搜索、对数据的可视化,并管理和监控Stack;Elasticsearch也是搜索、索引和分析的工厂。
二、什么是Elasticsearch?
Elasticsearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java语言开发的,并作为Apache许可条款下的开放源码发布,是一种流行的企业级搜索引擎。
三、为什么选择Elasticsearch?
Elasticsearch为所有的数据类型提供了近乎于实时的搜索和分析。
3.1、数据类型的介绍
数据类型按照数据格式是分为结构化、半结构化、非结构化数据。
3.1.1、什么是结构化数据
信息能够用数据或统一的结构加以表示,称为结构化数据。
结构化数据一般表现为键值、通常依赖于建立一个数据模型,并且可以使用关系型数据库表示和存储,例如Mysql。
3.1.2、什么是非结构化数据
信息无法用数据或统一的结构表示,称为非结构化数据。
比如说图片、文档、视频、音频等等。
3.1.3、什么是半结构化数据
半结构化数据没有数据结构、但是包含标记,用来分割语义元素以及对记录和字段进行分层。
比如说xml文件:
3.2、同类型搜索引擎比较
Solr 是Apache下的一个顶级开源项目,采用Java开发,它是基于Lucene的全文搜索服务器。Solr提供了比Lucene更为丰富的查询语言,同时实现了可配置、可扩展,并对索引、搜索性能进行了优化。
属性 | Solr | Elasticsearch |
---|---|---|
安装难易 | 安装略微复杂 | 开箱即用,一步到位 |
分布式 | 使用Zookeepr进行分布式管理 | 自带分布式调节功能 |
支持数据格式 | JSON、XML、CSV等等 | 只支持JSON |
已有数据查询速度 | 快 | 慢 |
实时数据查询速度 | 创建索引会产生io阻塞,随着数据量的增加会查询效率会越来越低 | 创建索引很快,数据的增加不会明显的影响速度 |
资料查询 | 较为老旧 | 很多 |