一、什么是Elasticsearch
1、概念以及特点
1、Elasticsearch和MongoDB/Redis/Memcache一样,是非关系型数据库。
是一个接近实时的搜索平台,从索引这个文档到这个文档能够被搜索到只有一个轻微的延迟,企业应用定位:采用Restful API标准的可扩展和高可用的实时数据分析的全文搜索工具。
2、可拓展:支持一主多从且扩容简易,只要cluster.name一致且在同一个网络中就能自动加入当前集群;本身就是开源软件,也支持很多开源的第三方插件。
3、高可用:在一个集群的多个节点中进行分布式存储,索引支持shards和复制,即使部分节点down掉,也能自动进行数据恢复和主从切换。
4、采用RestfulAPI标准:通过http接口使用JSON格式进行操作数据。
5、数据存储的最小单位是文档,本质上是一个JSON 文本:
2、项目中为何使用(主搜索次分析再存储)
2.1、搜索引擎
实际项目开发中,几乎每个系统都会有一个搜索的功能,数据量少时可以直接从主数据库中比如Mysql搜索。
但当搜索做到一定程度时,比如系统数据量上了10亿、100亿条的时候,传统的关系型数据库的I/O性能和统计分析性能就难以满足用户需要了。
所以很多公司都会把搜索单独做成一个独立的模块,用ElasticSearch等来实现。
虽然内存缓存数据库的读写性能很高,但完全把数据放在内存中是不太现实的,比如到PB级别的数据,按照每个节点96G内存计算,
在内存完全装满的数据情况下,需要的机器是:1PB=1024T=1048576G ,节点数就是1048576/96=10922个 ,再考虑到数据备份,节点数还需要翻倍,成本巨大决定了其不现实!
2.2、日志分析
Elasticsearch+ Logstash + Kibana是同一家公司开发的3个开源工具,可组合起来搭建海量日志分析平台,目前很多公司都在使用这种方式搭建日志分析平台进行大数据分析。
3、底层架构
2、RESTFul 介绍
1、什么是RESTFul
REST(RepresentationalState Transfer)是一种软件架构的设计风格(不是标准),通过 HTTP接口处理数据,主要用于客户端和服务器的数据交互。
该风格的具体特点——在服务器端,应用程序对象、数据库记录、算法、文本、图片等都是一个实体资源,使用 URI标识,
所有资源都共享统一的接口(标准的HTTP方法)比如 GET、PUT、POST 和 DELETE,在客户端和服务器之间传输数据。
2、CURL命令的讲解
2.1、什么是CURL
本质就是以命令方式发送HTTP请求,可以完成比如发送表单信息、文件上传、分段下载、模拟登录等,理论上在APP或Web里能操作的通过此指令都能操作。