Elasticsearch 快速开始

2020-05-22 00:00:00 索引 查询 集群 文档 节点

前言

本文非完全直译译文,主要参考的的是 elasticsearch 6.5 版的官网文档 Getting Started,可以把这篇文章理解为个人学习笔记,我力求详略得当吧。

文末会附上 Getting Started 阅读梳理的思维导图。


为了能更加轻松地进入 elasticsearch 的世界,本文将先从基础角度给介绍了 es 的使用。

什么是 elasticsearch

Elasticsearch 是一款开源的全文搜索与分析引擎,它拥有高扩展、大容量数据的存储和处理特性,有着近乎实时的处理效果。elasticsearch 的使用场景还是比较多的,比如 APP 的搜索服务、ELK 实现日志收集与分析、BI 商业智能等。

本文会逐步引导大家进入 elasticsearch 的世界,初步窥探它的使用。相关内容涉及如下:

  • 了解 elasticsearch 的一些基础但非常核心的概念,比如集群、节点、索引、分片和副本;
  • 学会 elasticsearch 安装与启动,同时为了便于测试,顺带也介绍了 Kibana 的安装启动;
  • 探索集群,介绍集群涉及的一些基础操作,比如健康状态检查、集群节点检查,索引创建等;
  • 更新数据,包括如何进行文档替换、更新,以及如何进行删除,后通过批处理可以将多个操作组合起来;
  • 数据探索,主要是与搜索和聚合分析相关,介绍了常用的一些搜索 API、Query DSL 和聚合 API 的使用;

整体上的内容还是比较多的。

了解一些基础概念

Elasticsearch 中有一些基础但很核心的概念需要我们提前了解,它们对我们的学习将起到很大帮助。

具体是哪些概念呢?

  • 近实时
  • 集群
  • 节点
  • 索引
  • 类型
  • 文档
  • 分片副本

下面我们将逐一介绍。

近实时

什么是近实时?

它表示一个文档从被索引(存储使文档可搜索)到真正能被搜索之间有一个短暂的延迟,而非实时,这个延迟默认是 1 秒。当然,默认延迟可以修改的。

集群

集群是节点的集合。

集群实现了在多节点上进行大容量数据存储和搜索的能力。每个集群都拥有名称,而节点正是根据集群的名称决定是否加入某个集群。不同环境的集群的名称不能相同,如开发、测试、线上三套环境,集群可分别命名为 logging-dev、logging-test、logging-prod。

节点

节点,集群组成的一部分,负责具体的事务处理,比如数据存储、文档索引、搜索执行等。节点也有个名称,如果没有指定将随机生成。

节点可通过配置集群名称,指定加入哪个集群,节点默认的集群名称是 elasticsearch。如果我们在一个网络环境下启动多个节点,并且它们之间可以相互发现,就将会自动组织一个名称为 elasticsearch 的集群。

索引

索引是一系列相似文档的集合,例如,我们把客户信息存放到一个索引,订单信息存储到另一个索引中。索引可通过名称识别,名称必须小写。当操作文档时,我们需要通过索引名称指定。

索引的数量,集群中并没有限制定义索引的数量。

类型

elasticsearch 6.0 已丢弃功能,不具体介绍了。

有一点需要注意,为与老版本兼容,该功能暂未彻底移除,当前一个索引仍可设置类型,但当前只能指定一个类型。一般情况下,我们设置一个固定 type 即可,比如 _doc。

文档

被索引的基础信息单元,比如一个客户、一件产品、或是一笔订单。文档可用 JSON 形式表示,它是一种非常普遍的数据交换格式。索引中,我们可以存放任意数量的文档。

分片与副本

分片和副本是 elasticsearch 非常核心的概念。

我们知道,elasticsearch 存储的数据量能突破单个硬件的限制,数据处理速度有着近实时的水平。这些都和分片和副本有着很大关系。

分片实现了索引文档分散分布,并且每个切片都是功能完善的,索引是独立的,可能分布在集群中的任意节点。分片的重要性主要体现在使 elasticsearch 存储容量的水平扩展和分布式并行处理都成为了现实。

副本提高了 elasticsearch 的容错能力。网络环境下,异常随时可能发生,比如一些节点或分片从网络中消失。一旦设置了副本,索引就会同时拥有主分片和副本分片。一旦某个分片发生异常,还有其他分片可替代。而且,副本也可以提高请求的处理速度,一个分片上的副本可同时并行处理多个请求。

一句话简述,每个索引可以由多个分片组成,而每个分片也可以拥有多个副本。

介绍完了核心概念,是否已经开始蠢蠢欲动了?开始安装自己的集群吧。

安装与启动

本节主要介绍 elasticsearch 的安装。另外,由于要使用 kibana 的 devtools 控制台,将也会介绍下 kibana 的安装。

安装 elasticsearch

首先安装依赖,elasticsearch 是 Java 开发,6.5 版依赖 Java 8,建议安装 Oracle JDK 1.8.0_131。Java 安装完成后,就可以开始安装 elasticsearch 了。

简单起见,我们只介绍二进制包的安装。

安装过程仅仅三步搞定!

$ curl -L -O https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.5.4.tar.gz
$ tar -xvf elasticsearch-6.5.4.tar.gz
$ cd elasticsearch-6.5.4/bin
$ ./elasticsearch -d # -d 表示后台启动

相关文章