以前刚刚开始用 elasticsearch 的时候,记得是0.9版本,现在都2.0+了。
再玩一下 elasticsearch 的新版本。2.2.0下载地址:点击下载。
下载后在 elasticsearch 根目录下启动。
elasticsearch-2.2.0]# ./bin/elasticsearch
提示错误:
Exception in thread "main" java.lang.RuntimeException: don't run elasticsearch as root.at org.elasticsearch.bootstrap.Bootstrap.initializeNatives(Bootstrap.java:93)at org.elasticsearch.bootstrap.Bootstrap.setup(Bootstrap.java:144)at org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:285)at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:35)Refer to the log for complete error details.
因为版本的问题,最新的版本安全级别提高了,不允许采用root帐号启动,所以我们要添加一个用户。
#添加一个用户:elasticsearch$useradd elasticsearch#给用户elasticsearch设置密码,连续输入2次$passwd elasticsearch#创建一个用户组 esgroupadd es#分配 elasticsearch 到 es 组usermod -G elasticsearch es#这里注意下,如果提示用户“es”不存在,那么是因为服务器版本问题,你可以换成 usermod -G es elasticsearch ,也就是用户和用户组对调一下使用。#这里感谢【武汉|Java|竹木鸟】发现这个问题,并告知我。#在elasticsearch 根目录下,给定用户权限。-R表示逐级(N层目录) , * 表示 任何文件chown -R elasticsearch.es *#切换到elasticsearch用户su elasticsearch
如果不按上面的给用户 elasticsearch 分配权限目录。那么会报下面的错。
java.io.FileNotFoundException: /home/es/elasticsearch-2.2.0/logs/elasticsearch.log (Permission denied)at java.io.FileOutputStream.open(Native Method)at java.io.FileOutputStream.(FileOutputStream.java:221)at java.io.FileOutputStream.(FileOutputStream.java:142)at org.apache.log4j.FileAppender.setFile(FileAppender.java:294)at org.apache.log4j.FileAppender.activateOptions(FileAppender.java:165)at org.apache.log4j.DailyRollingFileAppender.activateOptions(DailyRollingFileAppender.java:223)at org.apache.log4j.config.PropertySetter.activate(PropertySetter.java:307)at org.apache.log4j.config.PropertySetter.setProperties(PropertySetter.java:172)at org.apache.log4j.config.PropertySetter.setProperties(PropertySetter.java:104)at org.apache.log4j.PropertyConfigurator.parseAppender(PropertyConfigurator.java:842)at org.apache.log4j.PropertyConfigurator.parseCategory(PropertyConfigurator.java:768)at org.apache.log4j.PropertyConfigurator.configureRootCategory(PropertyConfigurator.java:648)at org.apache.log4j.PropertyConfigurator.doConfigure(PropertyConfigurator.java:514)at org.apache.log4j.PropertyConfigurator.configure(PropertyConfigurator.java:440)at org.elasticsearch.common.logging.log4j.LogConfigurator.configure(LogConfigurator.java:128)at org.elasticsearch.bootstrap.Bootstrap.setupLogging(Bootstrap.java:204)at org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:258)at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:35)log4j:ERROR Either File or DatePattern options are not set for appender [file].log4j:ERROR setFile(null,true) call failed.
修改配置文件:
$ vi config/elasticsearch.yml#cluster namecluster.name: sojson-application#节点名称node.name: node-1#绑定IP和端口network.host: 123.88.88.88http.port: 9200
安装 head 插件。
进入$ cd elasticsearch/bin
目录,输入命令
$ ./plugin –install mobz/elasticsearch-head
安装head插件。
上面是错误的,新版本安装的方式是这样的。
$ ./plugin install mobz/elasticsearch-head
注意到没,–install 是不用 - 的,直接 install 。
head 插件的安装,以及具体的介绍,请查看后面写的博客:Elasticsearch安装(四), elasticsearch head 插件安装和使用。
$ ./bin/elasticsearch
再访问http://{es-host}:9200/_plugin/head/
如下图就对了。
打完收工,接下来的博客会讲到,分词器安装,分词器对比,以及使用等等。
本文介绍了如何解决Elasticsearch 2.2.0版本中使用root账户启动的问题,包括创建专用账户及分配权限的过程,并详细记录了配置文件的修改方法,以及安装Head插件的具体步骤。





