猫哥继续大数据旅程,开始接触各种各样的从来木听说过的软件、集群、系统... 当然也是踩各种各样的坑...
边踩坑边记录过程。今天来的是分布式告诉搜索——ElasticSearch!
ElasticSearch是神马?
【以下来自“https://es.xiaoleilu.com” ElasticSearch权威指南 - 中文版】
Elasticsearch是一个基于Apache Lucene(TM)的开源搜索引擎。无论在开源还是专有领域,Lucene可以被认为是迄今为止最先进、性能最好的、功能最全的搜索引擎库。
Elasticsearch使用Java开发并使用Lucene作为其核心来实现所有索引和搜索的功能,但是它的目的是通过简单的 RESTful API 来隐藏Lucene的复杂性,从而让全文搜索变得简单。
不过,Elasticsearch不仅仅是Lucene和全文搜索,我们还能这样去描述它:
•分布式的实时文件存储,每个字段都被索引并可被搜索
•分布式的实时分析搜索引擎
•可以扩展到上百台服务器,处理PB级结构化或非结构化数据
而且,所有的这些功能被集成到一个服务里面,你的应用可以通过简单的 RESTful API 、各种语言的客户端甚至命令行与之交互。
安装、启动
操作系统:CentOS 6.6,JDK-1.7.0(JDK安装过程很简单,不再详述)。
首先,下载ElasticSearch,到这个地址: https://www.elastic.co/downloads/elasticsearch 找zip或者tar.gz包都可以。
猫哥找到的是,ElasticSearch-5.2.2的。
下载下来,解开压缩,放在某个目录,比如猫哥放在/data/分区下。变成:/data/elasticsearch522/
坑来了!!
直接用root启动 /data/elasticsearch522/bin/elasticsearch 是不行,会看到如下错误:
# ./elasticsearch
[2017-03-28T11:16:30,936][WARN ][o.e.b.ElasticsearchUncaughtExceptionHandler] [] uncaught exception in thread [main]
org.elasticsearch.bootstrap.StartupException: java.lang.RuntimeException: can not run elasticsearch as root
at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:125) ~[elasticsearch-5.2.2.jar:5.2.2]
at org.elasticsearch.bootstrap.Elasticsearch.execute(Elasticsearch.java:112) ~[elasticsearch-5.2.2.jar:5.2.2]
at org.elasticsearch.cli.SettingCommand.execute(SettingCommand.java:54) ~[elasticsearch-5.2.2.jar:5.2.2]
at org.elasticsearch.cli.Command.mainWithoutErrorHandling(Command.java:122) ~[elasticsearch-5.2.2.jar:5.2.2]
at org.elasticsearch.cli.Command.main(Command.java:88) ~[elasticsearch-5.2.2.jar:5.2.2]
at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:89) ~[elasticsearch-5.2.2.jar:5.2.2]
at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:82) ~[elasticsearch-5.2.2.jar:5.2.2]
Caused by: java.lang.RuntimeException: can not run elasticsearch as root
at org.elasticsearch.bootstrap.Bootstrap.initializeNatives(Bootstrap.java:105) ~[elasticsearch-5.2.2.jar:5.2.2]
at org.elasticsearch.bootstrap.Bootstrap.setup(Bootstrap.java:203) ~[elasticsearch-5.2.2.jar:5.2.2]
at org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:333) ~[elasticsearch-5.2.2.jar:5.2.2]
at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:121) ~[elasticsearch-5.2.2.jar:5.2.2]
... 6 more
好吧,单独建用户和用户组。说是为了安全考虑!但是官方文档里好歹提一句吖!!
添加用户组、用户,设置密码
groupadd elasticsearch
useradd elasticsearch -g elasticsearch
passwd elasticsearch
改整个文件夹属性:
chown -R elasticsearch:elasticsearch elasticsearch522/
然后... 还有N多坑...
但是,猫哥发现一个好办法——让除了添加用户之外的坑一下子消失!那就是——
用CentOS 7
验证
/data/elasticsearch-5.2.2/bin/elasticsearch
$ curl http://127.0.0.1:9200/
返回类似下面内容:
$ curl http://127.0.0.1:9200
{
"name" : "FNNSxYv",
"cluster_name" : "elasticsearch",
"cluster_uuid" : "Hkze-E7-ToON_knDuZhxHQ",
"version" : {
"number" : "5.2.2",
"build_hash" : "f9d9b74",
"build_date" : "2017-02-24T17:26:45.835Z",
"build_snapshot" : false,
"lucene_version" : "6.4.1"
},
"tagline" : "You Know, for Search"
}
完成了。