Elasticsearch 简介
Elasticsearch 使用 Java 语言开发,使用 Elastic 开源协议,实时分布式开源的全文搜索和分析引擎。
Elasticsearch 通过 RESTful Web 服务接口访问,并使用 JSON 文档来存储数据。
Elasticsearch 使用 Java 作为开发语言,但却能够跨平台运行,可以使用者非常快速的探索大量的数据
Elasticsearch 由 Shay Banon 于 2010 年创建,当前的最新版本是 2018 年 6 月 13 日发布的 6.3.0
Elasticsearch 官网
Elasticsearch 的官方网址是: https://www.elastic.co/products/elasticsearch
Elasticsearch 的下载地址是: https://www.elastic.co/downloads/elasticsearch
Elasticsearch 背后的公司
Elasticsearch 发布不久后就受到开发的持续关注,成为 Github 上最受欢迎的项目之一。
之后,一家主营 Elasticsearch
的公司成立了,它们一边提供商业支持一边开发新功能,但它们保证, Elasticsearch 将永远开源且对所有人可用
Elasticsearch 的特性
-
安装方便:没有其他依赖,下载后安装非常方便;只用修改几个参数就可以搭建起来一个集群
-
JSON:输入/输出格式为 JSON,意味着不需要定义 Schema,快捷方便
-
RESTful:基本所有操作 ( 索引、查询、甚至是配置 ) 都可以通过 HTTP 接口进行
-
分布式:节点对外表现对等(每个节点都可以用来做入口);加入节点自动均衡
-
多租户:可根据不同的用途分索引;可以同时操作多个索引
-
支持超大数据: 可以扩展到 PB 级的结构化和非结构化数据
-
Elasticsearch 可以用来替代 MongoDB 和 RavenDB 等文档数据库
说了这么多,其实只有一个优点: 如果想要创建自己的搜索引擎,那么 Elasticsearch 是唯一的不可替代的方案,没有之一
Elasticsearch 优点
-
Elasticsearch 使用 Java 作为开发语言,所以可以运行在任何平台上
-
Elasticsearch 是实时的,换句话说,就是在添加了文档后就可以立刻搜索到刚刚添加的文档
-
Elasticsearch 是分布式的,可以轻松扩展并集成到任何大型组织中
-
通过使用 Elasticsearch 中的网关概念,轻松创建完整备份
-
与 Apache Solr 相比,Elasticsearch 中处理多租户非常容易
-
Elasticsearch 使用 JSON 对象作为响应,这是当下最流行的数据交换格式
-
Elasticsearch 几乎支持所有文档类型,但不能渲染的文本除外,例如二进制数据
Elasticsearch 缺点
-
与 Apache Solr 不同,Elasticsearch 在处理请求和响应数据方面不支持多种数据格式,也就是说只支持 JSON
Apache Solr 支持多种数据传输格式,比如 CSV,XML 和 JSON 格式
-
Elasticsearch 也存在脑裂 ( Split-Brain ) 的情况,但发生的可能性很少
Split-Brain,中文一般翻译为 脑裂, 脑裂问题就是产生了两个 leader,导致集群行为不一致