如何安装与设置Elasticsearch-API

55次阅读

共计 4284 个字符,预计需要花费 11 分钟才能阅读完成。

如何安装与设置 Elasticsearch API

到目前为止,在本系列文章中,我一直在撰写有关 Elasticsearch 和 Elastic 堆栈组件的一般知识。
系列文章列表
01.ElasticSearch 能做什么?
02.Elastic Stack 功能介绍
03. 如何安装与设置 Elasticsearch API

如果想找更实操的操作手册,我推荐你看这篇从小白到大师成长_ElasticSearch 入门教程_

从本文开始,我们将开始深入研究 Elasticsearch API。在本文中,我们将主要侧重于 Elasticsearch 的安装,然后学习如何使用 Elasticsearch 提供的基本 CRUD API。我们还将安装一个名为 elasticsearch-head 的第三方应用程序,以查看 UI 中的更改。
1. 安装 Elasticsearch
首先,让我们首先在系统中安装和配置 Elasticsearch。在本教程中,我将 Ubuntu 16.04 用作具有 8GB RAM 的计算机上的操作系统。

1.1 Java 安装
正如我们在之前的博客中所看到的那样,Elasticsearch 是建立在名为 Lucene 的库之上的,而 Lucene 又是建立在 Java 之上的。因此,Java 是安装 Elasticsearch 的先决条件。以下是在计算机中安装 Java 的步骤:
sudo add-apt-repository ppa:webupd8team/java -y
sudo apt-get update
sudo apt-get install oracle-java8-installer
1.2 Elasticsearch 安装
让我们看看如何在此处将 Elasticsearch 作为服务安装。

  1. 在此处下载最新版本的 Elasticsearch
  2. 输入

sudo dpkg -i elasticsearch-5.6.3.deb

完成上述安装后,键入
sudo service elasticsearch start

以启动服务。
这将在您的本地环境中作为服务安装并启动 elasticsearch。
elasticsearch 运行的默认端口是 9200。要检查它是否正在运行,只需在终端中键入以下命令:
curl localhost:9200

上面的命令将导致如下所示的响应:

{“name”:“9CCT_A1”,“cluster_name”:“elasticsearch”,“cluster_uuid”:“QqZcNgcdRDW8sWMaLNf-Jg”,“version”: {“number”:“5.6.3”,“build_hash”:“1a2f265”,“build_date”:“2017–10–06T20: 33: 39.012Z”,“build_snapshot”: false,“lucene_version”:“6.6.1”},“tagline”:“YouKnow,
  forSearch”}

1.3 配置文件
在 Elasticsearch 世界中最重要的事情之一就是正确配置它。我们应该熟悉 Elasticsearch 中两个重要的配置文件。这些是:
1.3b elasticsearch.yml
此配置文件允许使用许多配置选项,例如更改 elasticsearch 的端口,定义集群中的节点,解决 cors 问题等。
该配置文件的位置在文件夹“etc / elasticsearch”下。在这里,您可以看到 elasticsearch.yml 文件。

1.3b jvm.options.yml
yml 文件中的配置包含在 5.x 之前版本的 elasticsearch.yml 中。此处的配置负责 Java 虚拟机内存管理。此配置文件的位置也位于
etc/elasticsearch

。我们将在以后的博客中详细介绍这一点。

  1. Elasticsearch 中的索引,类型和文档

至此,我们已经成功在系统中安装了 elasticsearch。现在让我们熟悉 Elasticsearch 中的基本数据存储模型。正如我们在之前的博客中提到的那样,Elasticsearch 是一个 NoSql 数据库。

因此,在这里,代替 SQL 世界中的数据库,表,行是希拉基,最接近的希拉基类比是索引,类型和文档。这意味着,当文档(应为 JSON 格式)保存在 Elasticsearch 中时,其地址看起来像

index name:这类似于 SQL world 中的数据库名称。这是必不可少的信息。Elasticsearch 可能包含许多索引,并且要存储的文档应提供失败的索引名称,这将导致错误,因为 Elasticsearch 无法确定文档属于哪个索引。此外,索引名称不支持大写和某些特殊字符。

type name:Elasticsearch 中的类型类似于 SQL 世界中数据库下的表。因此,索引下可以有多个表。表格下可以有多个文档。如果我们没有给文档提供类型名称,elasticsearch 仍将使用默认类型名称进行索引。

document ID:文档的唯一 ID。可以由将文档放到 Elasticsearch 的用户提供,或者如果没有提供,Elasticsearch 会自动生成一个唯一值。

注意:“索引名称 + 类型名称 + 文档 ID”的组合对于 elasticsearch 中的每个文档都是唯一的
下图显示了具有多个索引的典型 elasticsearch 数据库的外观。

3 CRUD 操作 - 命令行
现在,我们对 Elasticsearch 中的数据混乱有了一个基本的想法。在本节中,让我们使用命令行界面在 Elasticsearch 中执行一些基本的 CRUD 操作。
3.1 创建索引
从上一节中我们知道,要将文档存储在 Elasticsearch 中,我们需要指定索引名称。因此,重要的是在存储任何此类文档之前创建索引。让我们
test_index_01

从终端创建一个名为“”的索引,如下所示:
curl -XPUT localhost:9200/test_name_01

上面的命令将产生如下所示的响应:

{“acknowledged”: true,“shards_acknowledged”: true,“index”:”test_index_01" 
}

3.2 建立文件
现在我们已经创建了索引,我们可以将文档索引到 elasticsearch。
在这种情况下,我们将为文档 ID 等于 1 的文档建立索引(存储)。可以按照以下步骤进行操作:

curl -XPUT localhost:9200/test_index_01/test_type_01/1 -d‘{“name”:”ArunMohan”,“age”: 32
}’

在上述请求中,以下是我们传递给 elasticsearch 的数据的分割信息

indexname: test_index_01
type_name: test_type_01
documentid: 1
document : {“name”:“ArunMohan”,“age”: 32
}

以上请求将导致如下响应:

{
  _index: test_index_01,
  _type: test_type_01,
  _id: 1,
  _version: 1,
  result: created,
  _shards: {
    total: 2,
    successful: 1,
    failed: 0
  },
  created: true
}

在响应中,我们再次可以看到索引名称(“index”),类型名称(“_type”),文档 ID(“ id”)。还将操作状态作为“已创建”值。“created”的值是 true,表示文档索引成功。
3.3 阅读文件
可以使用带有索引名称,类型名称和其中指定的文档 ID 的 GET 请求从 elasticsearch 中检索文档。这充当该文档的准确地址(前提是所传递的所有三个信息都是准确的),Elasticsearch 将为我们获取该文档。让我们看看如何检索刚刚索引的文档。

curl -XGET localhost:9200/test_index_01/test_type_01/1
上面的请求将返回如下响应:

{
  _index: test_index_01,
  _type: test_type_01,
  _id: 1,
  _version: 1,
  found: true,
  _source: {
    name: ArunMohan,
    age: 32
  }
}

在以上响应中,我们可以看到文档位于响应的“_source”对象下。元数据包括其他信息和检索状态为“已找到”。
3.4 更新文件
如果需要更新已经建立索引的文档的字段怎么办?Elasticsearch 为我们提供了此操作的更新 API。在我们的示例中,假设我要使用新值 31 更新年龄字段。对此的请求如下所示:
curl -XPOST localhost:9200/test_index_01/test_type_01/1/_update -d ‘{“doc”:{“age”:31}}’

您可能已经注意到,我在请求中仅给出了必填字段和该字段的新值({“age”:31})。在名为“doc”的对象下也是如此。该请求还包含有关要更新的文档的所有信息(索引名称,类型名称和文档 ID),以便 Elasticsearch 可以找到该文档并对该特定字段进行更改(这不是它的确切工作方式,而是目前,我们正在深潜)。现在,如果文档中不存在这样的字段,Elasticsearch 将在文档中创建一个这样的字段。
对于以上请求,我们将获得以下响应:

{
  "_index": "test_index_01",
  "_type": "test_type_01",
  "_id": "1",
  "_version": 2,
  "result": "updated",
  "_shards": {
    "total": 2,
    "successful": 1,
    "failed": 0
  }
}

在以上响应的结果字段中,我们可以看到状态为“已更新”,表明更新成功。
3.5 删除文件
删除类似于前面提到的内容。只需提供索引名称,类型名称和要删除的文档以及请求的文档 ID,即可将其删除,如下所示:
curl -XDELETE localhost:9200/test_index_01/test_type_01/1

这将使我们得到如下响应:

{
  "found": true,
  "_index": "test_index_01",
  "_type": "test_type_01",
  "_id": "1",
  "_version": 3,
  "result": "deleted",
  "_shards": {
    "total": 2,
    "successful": 1,
    "failed": 0
  }
}

结论
在本文中,我们已经看到了 Elasticsearch 的安装,然后是其上的基本 CRUD 操作。在本系列的下一个博客中,我们将看到如何在同一系统上使用多个 elasticsearch 实例。

正文完
 0