简介
ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是当前流行的企业级搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。
安装
- 安装jdk CENTOS 7.X 安装JDK
2.安装Elasticsearch(简称es)
我是使用rpm的方式安装 官方文档Install Elasticsearch with RPM
安装es的公钥,执行命令
rpm --import https://artifacts.elastic.co/GPG-KEY-elasticse
添加源,在目录/etc/yum.repos.d/
新增文件elasticsearch.repo
,
执行命令
vim /etc/yum.repos.d/elasticsearch.repo
添加下面内容
[elasticsearch-6.x]
name=Elasticsearch repository for 6.x packages
baseurl=https://artifacts.elastic.co/packages/6.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md
执行安装命令
yum install elasticsearch
安装成功之后根据需求安装插件,我是安装了分词插件
进入安装目录
cd /usr/share/elasticsearch
执行命令
./bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v6.4.0/elasticsearch-analysis-ik-6.4.0.zip
服务启动
网上大部分的教程都是通过下面命令进行启动
./bin/elasticsearch -d
我刚开始加了守护进程参数导致了没有报错,无法看到错误原因,后面删除了-d
参数
结果显示:
[2018-11-13T18:42:49,646][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:140) ~[elasticsearch-6.4.3.jar:6.4.3]
at org.elasticsearch.bootstrap.Elasticsearch.execute(Elasticsearch.java:127) ~[elasticsearch-6.4.3.jar:6.4.3]
at org.elasticsearch.cli.EnvironmentAwareCommand.execute(EnvironmentAwareCommand.java:86) ~[elasticsearch-6.4.3.jar:6.4.3]
at org.elasticsearch.cli.Command.mainWithoutErrorHandling(Command.java:124) ~[elasticsearch-cli-6.4.3.jar:6.4.3]
at org.elasticsearch.cli.Command.main(Command.java:90) ~[elasticsearch-cli-6.4.3.jar:6.4.3]
at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:93) ~[elasticsearch-6.4.3.jar:6.4.3]
at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:86) ~[elasticsearch-6.4.3.jar:6.4.3]
Caused by: java.lang.RuntimeException: can not run elasticsearch as root
at org.elasticsearch.bootstrap.Bootstrap.initializeNatives(Bootstrap.java:104) ~[elasticsearch-6.4.3.jar:6.4.3]
at org.elasticsearch.bootstrap.Bootstrap.setup(Bootstrap.java:171) ~[elasticsearch-6.4.3.jar:6.4.3]
at org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:326) ~[elasticsearch-6.4.3.jar:6.4.3]
at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:136) ~[elasticsearch-6.4.3.jar:6.4.3]
... 6 more
这是由于es在6之后出于安全考虑,禁止了root用户启动
所以新建启动用户
groupadd elasearch
useradd -g elasearch elasearch -p elasticsearch
切换到新用户启动
su elasearch
./bin/elasticsearch
结果显示:
./elasticsearch-env: line 70: /etc/sysconfig/elasticsearch: Permission denied
可能是没权限的原因,所以
chown -R elasearch:elasearch /usr/share/elasticsearch
再次启动还是失败,错误如上.
我查看了下系统进程
systemctl list-unit-files ##列出当前系统服务的状态
发现有一个elasticsearch的服务
于是使用systemctl
启动
systemctl start elasticsearch
启动成功.
基本使用命令
systemctl start elasticsearch # 启动服务
systemctl restart elasticsearch #重启服务
systemctl status elasticsearch #查看服务状态
systemctl stop elasticsearch #停止服务
测试
curl http://127.0.0.1:9200
结果显示:
{
"name" : "wXqsq_c",
"cluster_name" : "elasticsearch",
"cluster_uuid" : "TM9cCbCbQhq6RrC879GsBQ",
"version" : {
"number" : "6.4.3",
"build_flavor" : "default",
"build_type" : "rpm",
"build_hash" : "fe40335",
"build_date" : "2018-10-30T23:17:19.084789Z",
"build_snapshot" : false,
"lucene_version" : "7.4.0",
"minimum_wire_compatibility_version" : "5.6.0",
"minimum_index_compatibility_version" : "5.0.0"
},
"tagline" : "You Know, for Search"
}
妥了.
远程访问
另外,es默认是禁止了远程访问的,所以如果有需要允许其它服务器访问,需要修改配置
编辑配置文件vim /etc/elasticsearch/elasticsearch.yml
修改配置,默认注释去掉
network.host: 0.0.0.0 #这个配置允许任何服务器访问,如果需要限定某台设置访问ip就可以
重启服务就妥了.另外切记服务器一定要开启9200
端口