Elasticsearch是分布式,基于REST的搜索和分析平台。 它可以根据需要进行扩展,您可以立即开始在单个DigitalOceanDroplet上使用它。 在本教程中,我们将在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已运行安装java -version
。
这就是我们现在需要的所有依赖项,所以让我们开始获取和安装Elasticsearch。
下载并安装
Elasticsearch可以直接从网站上下载的ZIP,tar.gz的,DEB或RPM软件包。 你不需要提前这样做,因为我们将在下面的文本中下载我们需要的文件,因为我们需要它们。
安装
考虑到Elasticsearch提供的下载选项,我们有几个选项:
- 从zip或tar.gz归档文件安装。
- 从deb包安装。
- 从rpm包安装。
最后一个选项不是Ubuntu的方式,所以我们将忽略它。
从zip或tar.gz存档安装是最好的,如果你只是想用Elasticsearch玩一会儿。 从这些选项中的任何一个安装只是提供运行Elasticsearch所需的二进制文件。 从deb软件包安装完全安装Elasticsearch并启动服务器立即运行。 这包括安装在init脚本/etc/init.d/elasticsearch
它在启动时启动Elasticsearch。 如果你只是想玩Elasticsearch,我建议从zip或tar.gz安装。 这样,您可以随时启动和停止服务器来发现Elasticsearch。
从zip或tar.gz存档安装
zip和tar.gz下载包含Elasticsearch的预编译二进制文件。
首先,下载源码在某个方便。 提取归档文件后,您可以直接从结果目录运行二进制文件,因此您应该将它们放在每个想要访问Elasticsearch的用户可访问的位置。 对于本教程,我们只是下载到当前用户的目录。 如果你将它们下载到/tmp
,他们很可能当您重新启动您的VPS消失。 如果这是你想要的,继续下载。 您可以创建一个新的临时目录/tmp
运行快速mktemp -d
。
无论如何,在继续之前,请确保您位于要提取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存档。 如果你下载的压缩包,请确保您以前已经运行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软件包安装也安装在init脚本/etc/init.d/elasticsearch
启动开机运行Elasticsearch服务器。 服务器也将在安装后立即启动。
配置文件
如果从zip或tar.gz归档安装,则在生成的目录的config文件夹中找到配置文件。 如果从包的Debain安装,配置文件被发现在/etc/elasticsearch
。
在这两种情况下,将有两个主要的配置文件:elasticsearch.yml和logging.yml。 第一个配置Elasticsearch服务器设置,而后者,不出所料的是,Elasticsearch使用的记录器设置。
“elasticsearch.yml”将默认情况下只包含注释。
“logging.yml”提供了基本日志记录的配置。 你可以找到在/ var所生成的日志/日志/ elasticsearch。
删除Elasticsearch公共访问
在继续之前,您将需要配置Elasticsearch,使其不能访问公共Internet - Elasticsearch没有内置的安全性,并且可以由任何可以访问HTTP API的人控制。 这可以通过编辑来完成elasticsearch.yml
。 假定您随包一起安装,请使用以下命令打开配置:
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.yml和logging.yml。 第一个是一般的Elasticsearch配置。 提供的文件只包含注释,因此使用默认设置。 阅读文件将提供一个很好的概述的选项,但我会在下面提出几个建议。 不需要任何设置。 您可以使用Elasticsearch而不执行任何以下操作,但它将是一个原始的开发环境。
设置“cluster.name”是Elasticsearch提供自动发现的方法。 这意味着如果同一网络上的一组Elasticsearch服务器共享相同的集群名称,它们将自动发现彼此。 这是缩放Elasticsearch的简单,但是请注意,如果您保留默认群集名称,并且您的网络上还有其他不受您控制的Elasticsearch服务器,那么您可能会陷入糟糕的状态。
基本用法
让我们在Elasticsearch安装中添加一些数据。 Elasticsearch使用RESTful API,它响应通常的CRUD命令:创建,读取,更新和销毁。
添加条目
curl -X POST 'http://localhost:9200/tutorial/helloworld/1' -d '{ "message": "Hello World!" }'
您应该会看到以下响应
{“OK”:真实的“ 指数”:“教程”,“类型”:“HelloWorld”的,“ID”:“1”,“版本”:1}
我们所做的是向Elasticserach服务器发送HTTP POST请求。 请求的URI是/教程/的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!" }
}
这是更可读的。 输出也将被美化打印,而无需如果设置追加查询字符串format=yaml
的Elasticsearch配置文件英寸
结论
我们现在已经安装,配置和开始使用Elasticsearch。 因为它响应一个基本的RESTful API。 现在很容易从应用程序中使用Elasticsearch添加和查询数据。