10 分钟入门 Elasticsearch

作者: 刘思宁 | 来源:发表于2018-09-30 11:18 被阅读6次
    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 的返回如下:

    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。

    更改一个 document

    4. 删 - Delete

    DELETE /your_index/some_type/dqJTKGYBHQF78ND_EEzo
    

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

    Recap

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

    相关文章

      网友评论

        本文标题:10 分钟入门 Elasticsearch

        本文链接:https://www.haomeiwen.com/subject/tuxwoftx.html