Elasticsearch的安装,运行和基本配置

2014-10-05 · 14 min read

距离上一篇文章已经快 2 个月了,这些天公司任务不多,自己折腾了点好玩的东西,用了下 pm2,mongodb,redis 和 elasticsearch。mongodb 和 redis 在两个月前就写过部署相关的文章了,今天扯一下 Elasticsearch。

Elasticsearch 是一个非常赞的实时分布式搜索和分析引擎。它可以帮助你用前所未有的速度去处理大规模数据。它可以用于全文搜索,结构化搜索以及分析等。更重要的是入门简单,api 也比较清晰。根据官方的介绍,目前 Wikipedia,Github 和 StackOverflow 等都使用 Elasticsearch 进行搜索和分析。

Elasticsearch 是建立在全文搜索引擎 Apache Lucene 基础上的,可以说 Lucene 是当今最先进,最高效的全功能开源搜索引擎框架,但是 Lucene 只是一个框架,要充分利用它的功能,你需要很高学习成本,因为 Lucene 确实非常复杂。而 Elasticsearch 使用 Lucene 作为内部引擎,在其基础上封装了功能强大的 RESTful API,让你不需要了解背后复杂的逻辑,即可完成搜索……

安装 java#

Elasticsearch 是基于 java 的,使用前需要先安装 java。首先下载 rpm,我下载的是 jdk-7u67-linux-x64.rpm,下载好后,执行:

rpm -ivh jdk-7u67-linux-x64.rpm

关于安装的更多内容可以参考官方文档

安装 Elasticsearch#

Elasticsearch 的安装也很简单,首先下载压缩包:

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

然后解压:

tar -xvf elasticsearch-1.3.4.tar.gz
cd elasticsearch-1.3.4

ok 了,就是这么简单,然后就可以直接运行了:

./bin/elasticsearch

然后在浏览器,curl,或者其他任何方式(http 的都行),访问http://localhost:9200/?pretty ,j 就可以看到类似下面的返回:

{
   "status": 200,
   "name": "Shrunken Bones",
   "version": {
      "number": "1.4.0",
      "lucene_version": "4.10"
   },
   "tagline": "You Know, for Search"
}

你的 Elasticsearch 已经运行起来了。

使用 elasticsearch-servicewrapper#

只是运行起来是不够的,我们需要将 Elasticsearch 安装成服务,设置开机自启动什么的。这就要用到elasticsearch-servicewrapper了(当然也有其他方法),安装方法依旧简单,从 Github 上下载解压,直接把 service 文件夹放在elasticsearch-1.3.4/bin 下即可,执行下面的命令安装:

bin/service/elasticsearch install

然后就可以启动了:

bin/service/elasticsearch start

最简单的配置#

Elasticsearch 是非常强大的,既可以运行在你的笔记本上,也可以部署到成千上万的服务器上,处理 PB 级别的数据。不需要任何配置,就可以直接上手使用。而且,它的默认配置已经很好了,在你完全明白 Elasticsearch 的原理前,也不建议盲目的修改。下面简单限制下内存,因为我小内存 VPS 上安装的时候,出现过无法启动的问题。

由于我们使用 elasticsearch-servicewrapper 启动运行 Elasticsearch,所以限制内存也很简单,打开bin/service/elasticsearch.conf 文件,设置为合适的大小即可:

set.default.ES_HEAP_SIZE=1024

这里的单位是 MB。一般情况下,限制在总内存的 50%比较好,因为还要留下一半给 Lucene 使用。

最后#

Elasticsearch 的官方提供了“从入门到精通”的指南,有兴趣深入了解的朋友可以看看:http://www.elasticsearch.org/guide/en/elasticsearch/guide/current/index.html