如何在 Ubuntu VPS 上安装 Elasticsearch

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站

Elasticsearch 是一个分布式、RESTful 搜索和分析平台。它可以根据需要进行扩展,并且您可以立即在单个 DigitalOcean droplet 上开始使用它。在本教程中,我们将在 Ubuntu 上下载、安装并开始使用 Elasticsearch。目前已经在以下系统上测试了提供的步骤:Ubuntu 12.04.3 x64 和 Ubuntu 13.10 x64。

依赖项


首先,通过运行 apt-get update 命令更新可用软件包的列表。

接下来,我们必须安装 Java 运行时。这里有两个选项。

  • 安装由 Ubuntu 提供的 OpenJDK 运行时。
  • 安装 Elasticsearch 推荐的 Java 运行时,Oracle Java。

如果您只是想尝试一下并熟悉 Elasticsearch,或者运行一小组节点,第一个选项完全可以胜任。后一个选项是 Elasticsearch 推荐的,以确保兼容性。

OpenJDK


要实现第一个选项,我们可以简单地运行 apt-get install openjdk-6-jre

Oracle Java


对于第二个选项,我们将按照 Elasticsearch 文档中的步骤进行。首先,我们必须添加一个包含 Oracle Java 运行时的存储库

sudo add-apt-repository ppa:webupd8team/java

然后我们必须运行 apt-get update 从这个新存储库中获取软件包信息。在这样做之后,我们可以安装 Oracle Java 运行时

sudo apt-get install oracle-java7-installer

在执行上述命令时,您将需要接受 Oracle 二进制许可协议。如果您不同意该许可协议,您可以选择安装 OpenJDK 运行时。

测试 Java 安装


您可以通过运行 java -version 来检查 Java 是否已安装。

这就是我们目前所需的所有依赖项,让我们开始获取并安装 Elasticsearch。

下载和安装


Elasticsearch 可以直接从它们的网站以 zip、tar.gz、deb 或 rpm 包的形式下载。您不需要提前这样做,因为我们将根据下文所需的文件进行下载。

安装


考虑到 Elasticsearch 提供的下载选项,我们有几种选择:

  • 从 zip 或 tar.gz 存档安装。
  • 从 deb 包安装。
  • 从 rpm 包安装。

最后一个选项不是 Ubuntu 的方式,因此我们将忽略它。

如果您只是想尝试一下 Elasticsearch,最好从 zip 或 tar.gz 存档安装。从任一选项安装只是简单地提供了运行 Elasticsearch 所需的二进制文件。从 deb 包安装完全安装了 Elasticsearch,并立即启动了服务器。这包括在 /etc/init.d/elasticsearch 安装一个启动 Elasticsearch 的 init 脚本,以便在启动时启动 Elasticsearch。如果您只是想尝试一下 Elasticsearch,我建议您从 zip 或 tar.gz 安装。这样,您可以在随意启动和停止服务器的同时发现 Elasticsearch。

从 zip 或 tar.gz 存档安装


zip 和 tar.gz 下载都包含了 Elasticsearch 的预编译二进制文件。

首先,在方便的地方下载源文件。解压存档后,您将能够直接从生成的目录运行二进制文件,因此您应该将它们放在每个您希望访问 Elasticsearch 的用户都可以访问的地方。在本教程中,我们将只是下载到当前用户的目录。如果您将它们下载到 /tmp,它们在重启 VPS 时可能会消失。如果这是您想要的,那就把下载放在那里吧。您可以通过运行 mktemp -d 快速在 /tmp 中创建一个新的临时目录。

无论如何,在继续之前,请确保您在要将 Elasticsearch 解压缩到的目录中。

下载存档


运行以下命令之一

wget https://download.elasticsearch.org/elasticsearch/elasticsearch/elasticsearch-0.90.7.zip

或者

wget https://download.elasticsearch.org/elasticsearch/elasticsearch/elasticsearch-0.90.7.tar.gz

第一个命令下载 zip 存档,第二个命令下载 tar.gz 存档。如果您下载了 zip 包,请确保您之前已经运行了 apt-get install unzip,然后运行

unzip elasticsearch-0.90.7.zip

或者,如果您下载了 tar.gz 包,运行

tar -xf elasticsearch-0.90.7.tar.gz

任一选项都将创建 elasticsearch-0.90.7 目录。进入该目录,输入 cd elasticsearch-0.90.7,您将在 bin 文件夹中找到二进制文件。

从 Debian 软件包安装


对于 Ubuntu 来说,最好的包是 deb 包。RPM 可以工作,但需要先转换,我们将不在此介绍如何转换。通过运行以下命令获取 deb 包

wget https://download.elasticsearch.org/elasticsearch/elasticsearch/elasticsearch-0.90.7.deb

通过运行以下命令直接从 Debian 包安装

dpkg -i elasticsearch-0.90.7.deb

这将导致 Elasticsearch 被正确安装在 /usr/share/elasticsearch。请记住,从 Debian 包安装还会在 /etc/init.d/elasticsearch 安装一个 init 脚本,该脚本在启动时启动 Elasticsearch 服务器。安装后服务器也将立即启动。


### 配置文件
---
如果从 zip 或 tar.gz 压缩包安装,配置文件可以在生成目录的 config 文件夹中找到。如果从 Debain 包安装,配置文件可以在 `/etc/elasticsearch` 中找到。

无论哪种情况,都会有两个主要的配置文件:**elasticsearch.yml** 和 **logging.yml**。第一个配置 Elasticsearch 服务器设置,后者则是 Elasticsearch 使用的日志记录器设置。

"elasticsearch.yml" 默认情况下只包含注释。

"logging.yml" 提供基本日志记录的配置。你可以在 **/var/log/elasticsearch** 中找到生成的日志。

### 移除 Elasticsearch 的公共访问

在继续之前,您需要配置 Elasticsearch,使其对公共互联网不可访问--Elasticsearch 没有内置的安全性,可以被任何可以访问 HTTP API 的人控制。这可以通过编辑 `elasticsearch.yml` 来完成。假设您使用的是包安装,请使用以下命令打开配置:

```bash
sudo vi /etc/elasticsearch/elasticsearch.yml

然后找到指定 network.bind_host 的行,取消注释并将值更改为 localhost,使其看起来像下面这样:

network.bind_host: localhost

然后在文件中的某处插入以下行,以禁用动态脚本:

script.disable_dynamic: true

保存并退出。现在重新启动 Elasticsearch 以使更改生效:

sudo service elasticsearch restart

我们将在后面介绍其他基本配置选项,但首先我们应该测试最基本的 Elasticsearch 安装。

测试您的 Elasticsearch 安装


您现在要么已经将 zip 或 tar.gz 压缩包解压到一个目录中,要么从 Debian 包安装了 Elasticsearch。无论哪种方式,您都可以使用 Elasticsearch 二进制文件,并且可以启动服务器。如果您使用的是 zip 或 tar.gz 压缩包,请确保您在生成的目录中。如果您使用 Debian 包安装,Elasticsearch 服务器应该已经在运行,因此您不需要像下面所示那样启动服务器。

让我们确保一切都正常工作。运行

./bin/elasticsearch

Elasticsearch 现在应该在端口 9200 上运行。请注意,Elasticsearch 需要一些时间才能完全启动,因此立即运行下面的 curl 命令可能会失败。它不应该超过十秒钟才能开始响应,因此如果下面的命令失败,可能有其他问题。

通过运行以下命令来确保服务器已启动

curl -X GET 'http://localhost:9200'

您应该会看到以下响应

{
  "ok" : true,
  "status" : 200,
  "name" : "Xavin",
  "version" : {
    "number" : "0.90.7",
    "build_hash" : "36897d07dadcb70886db7f149e645ed3d44eb5f2",
    "build_timestamp" : "2013-11-13T12:06:54Z",
    "build_snapshot" : false,
    "lucene_version" : "4.5.1"
  },
  "tagline" : "You Know, for Search"
}

如果您看到类似上面的响应,那么 Elasticsearch 正常工作。或者,您可以通过浏览器查询您的 Elasticsearch 安装,访问 :9200。您应该会看到与上面使用 curl 时相同的 JSON。

如果您通过 zip 或 tar.gz 压缩包安装,可以使用 RESTful API 停止服务器

curl -X POST 'http://localhost:9200/_cluster/nodes/_local/_shutdown'

上面的命令也适用于使用 Debian 包安装 Elasticsearch,但您也可以使用 service elasticsearch stop 停止服务器。您可以使用相应的 service elasticsearch start 重新启动服务器。

使用 Elasticsearch


Elasticsearch 已经启动。现在,我们将介绍一些基本配置和用法。

基本配置


当通过 zip 或 tar.gz 压缩包安装时,配置文件可以在生成目录的 config 文件夹中找到。当通过 Debian 包安装时,配置文件可以在 /etc/elasticsearch/ 中找到。您将找到两个配置文件:elasticsearch.ymllogging.yml。第一个是通用的 Elasticsearch 配置。提供的文件只包含注释,因此将使用默认设置。阅读文件将提供对选项的良好概述,但我将在下面提供一些建议。这些设置都不是必需的。您可以在不执行以下任何操作的情况下使用 Elasticsearch,但这将是一个原始的开发环境。

“cluster.name” 设置了 Elasticsearch 提供自动发现的方法。这意味着如果同一网络上的一组 Elasticsearch 服务器共享相同的集群名称,它们将自动发现彼此。这就是扩展 Elasticsearch 的简单方法,但请注意,如果保留默认的集群名称,并且网络上有其他不受您控制的 Elasticsearch 服务器,您很可能会陷入糟糕的状态。

基本用法


让我们向我们的 Elasticsearch 安装添加一些数据。Elasticsearch 使用 RESTful API,响应通常的 CRUD 命令:创建(Create)、读取(Read)、更新(Update)和销毁(Destroy)。

要添加一个条目

curl -X POST 'http://localhost:9200/tutorial/helloworld/1' -d '{ "message": "Hello World!" }'

您应该会看到以下响应

{"ok":true,"_index":"tutorial","_type":"helloworld","_id":"1","_version":1}

我们所做的是向 Elasticserach 服务器发送了一个 HTTP POST 请求。请求的 URI 是 /tutorial/helloworld/1。理解这里的参数很重要:

  • “tutorial” 是 Elasticsearch 中数据的索引。
  • “helloworld” 是类型。
  • “1” 是上述索引和类型下我们条目的 id。

如果您看到了上面 curl 命令的响应,我们现在可以查询数据

curl -X GET 'http://localhost:9200/tutorial/helloworld/1'

响应应该是

{"_index":"tutorial","_type":"helloworld","_id":"1","_version":1,"exists":true, "_source" : { "message": "Hello World!" }}

成功!我们已经向 Elasticsearch 添加了数据并进行了查询。

需要注意的一点是,我们可以通过在查询中添加 ?pretty=true 来获得更好的输出。让我们试一试

curl -X GET 'http://localhost:9200/tutorial/helloworld/1?pretty=true'

响应应该是

{
  "_index" : "tutorial",
  "_type" : "helloworld",
  "_id" : "1",
  "_version" : 1,
  "exists" : true, "_source" : { "message": "Hello World!" }
}

这样更易读。如果您在 Elasticsearch 配置文件中设置了 format=yaml,输出也将被漂亮地打印,而无需添加查询字符串。

结论


我们现在已经安装、配置并开始使用 Elasticsearch。由于它响应基本的 RESTful API,因此现在很容易从您的应用程序开始使用 Elasticsearch 添加和查询数据。

  • 15
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

白如意i

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值