简介

ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是当前流行的企业级搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。

安装

  1. 安装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端口