10 分钟入门 Elasticsearch

10 分钟入门 Elasticsearch_第1张图片
from @unsplash

官方主页对 Elasticsearch(以下简称 ES)的定义是:

一个分布式的、RESTful 的搜索和数据分析的引擎

但排除掉这些炫酷的词汇,其核心只有一个:数据库

我们就从这个最核心的角度来入门 ES 吧。

安装 ES

ES 的官方网站上有详细的安装指南,我们这里只对 Mac 上的安装做一个总结:

  1. 安装 java(因为 ES 的安装包本质上是一堆 java 文件):brew cask install java
  2. 下载 ES 的 Mac 版,解压文件,示例: tar -xvf elasticsearch-6.x.x.tar.gz
  3. 进入解压出来的文件夹,执行 bin/elasticsearch,等待 ES 运行起来
  4. 用浏览器访问 http://localhost:9200/,会看到 ES 返回的信息

这样,你就按照好了一个 ES,他有很多配置项,在 config/ 目录下,可以去探索一下。

接下来,为了更直观的使用 ES,我们安装 Kibana。

按照 Kibana

Kibana 是什么?

如果说 ES 是个数据库,那么 Kibana 就是他的图形化操作软件(或曰 GUI console)。其之于 ES,就好像 workbench、sequel pro 等软件之于 MySQL。

Kibana 的官网上也按照方法,我们这里只对 Mac 版的按照做个总结:

  1. 下载 Mac 版安装包,并解压,示例:tar -xvf kibana-6.x.x.tar.gz
  2. 进入解压出来的文件夹,执行 bin/kibana
  3. 用浏览器访问 http://localhost:5601

其实,Kibana 是通过上面提到的 localhost:9200 访问 ES 的。如果你在 ES 的配置项中,更改了 ES 的端口,或绑定的 IP,那么就需要在 Kibana 的 config/kibana.yml 中总结指明这个修改。

增删改查

因为某些我还不知道的原因,这个世界上 99% 的数据库(99%是我猜的),归纳起来竟然只有 4 种操作:增删改查,或曰CRUD(增查改删)。

ES 作为一种数据库,也很难例外。所以,作为入门的最后一小节,我们就来看看 ES 中是怎么 CRUD 的。

1. 增 - Create:

首先说,ES 中存储的是一个一个的 JSON document(这一点和 mongoDB 有点像),你要 Create 一个 document,就把一个 JSON 发给 ES,语法是这样的:

POST /your_index/some_type
{
  "name": "Li Lei",
  "location": "the Earth"
}

其中 POST 代表“创建”动作;your_index 代表索引,这个索引不用事先创建,这是非关系型数据库的优势;some_type 是 document 的类型。索引和类型都可以替换为你想要的名字。

在 Kibana 中执行这个语句,会得到 ES 的返回如下:

10 分钟入门 Elasticsearch_第2张图片
Kibana 的 Dev Tools 界面

哦,对了,ES 官网上说自己是 RESTful 的引擎,不是瞎说的,他们真的用 RESTful 的模式来设计自己的增删改查语法,比如上面的 POST 语法。可以想见,按照 RESTful 的模式,在查改删的时候,ES 会用 (GET、PUT、DELETE) /index/type/:id 这样形式的语法。

在 Kibana 中执行的语句,本质上是往 ES 中发送了一个 http 请求。如果你不想使用 Kibana,完全可以用别的工具发送这个 http 请求,比如 cURL,或 postman:

curl -XPOST "http://localhost:9200/your_index/some_type" -H 'Content-Type: application/json' -d'
{
  "name": "Li Lei",
  "location": "the Earth"
}'

2. 查 - Read

就像 MySQL 等数据库中,查的需求是最多样的(各种表的联合,条件筛选等),ES 中也是。我们这里只介绍最基本的查询:

GET /your_index/some_type/dqJTKGYBHQF78ND_EEzo

请留意一下上图中的红色箭头所指示的 _id ,他就是你的 document 的 id,如果你想按 id 查询(类似于 SQL 中的 where id = ?),那么就要记住这个 id,然后用上面依然很 RESTful 的语法。

当然,你也可以查询一个索引下面的所有 documents:

GET /your_index/_search
{
  "query": {
    "match_all": {}
  }
}

请到你的 Kibana 中,执行这些语句。

3. 改 - Update

PUT /your_index/some_type/dqJTKGYBHQF78ND_EEzo
{
  "name": "Han Meimei",
  "location": "the Earth"
}

就不多解释了吧。指定 id 下的 document,会被更改成新的 document,同时 _version 会增加 1。

10 分钟入门 Elasticsearch_第3张图片
更改一个 document

4. 删 - Delete

DELETE /your_index/some_type/dqJTKGYBHQF78ND_EEzo

执行之后,这个 document 就找不到了,你可以再去 GET 他试试。

Recap

  1. 安装 ES
  2. 安装 Kibana (作为 ES 的 console)
  3. 了解 ES 增删改查的基本语法

你可能感兴趣的:(10 分钟入门 Elasticsearch)