下载安装 #

官方Elasticsearch 5.3 安装教程

# 下载Elasticsearch 5.3
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.3.0.tar.gz
# 解压压缩包
tar -xzf elasticsearch-5.3.0.tar.gz
# 进入解压出来的目录
cd elasticsearch-5.3.0/ 

注意:如果官方下载不下来,可以通过迅雷断点下载。

命令行运行 #

进入解压目录之后,运行下面命令即可开始运行Elasticsearch服务了。ctrl-c 结束服务。

# 命令行运行
./bin/elasticsearch
# 查看日志
tail -f logs/elasticsearch.log

运行出现下面警告,一般是磁盘不够的样子

[2017-04-06T14:01:41,191][INFO ][o.e.c.r.a.DiskThresholdMonitor] [cki_UTv] low disk watermark [85%] exceeded on [cki_UTvDRtWzj9hzmC1kvg][cki_UTv][/usr/local/elasticsearch-5.3.0/data/nodes/0] free: 25gb[10.7%], replicas will not be assigned to this node

全局命令调用 #

将你下载的目录拷贝到一个特定目录/usr/local 这个目录一般是本地系统管理员,用来自由添加程序的目录。

cp -rf elasticsearch-5.3.0 /usr/local/

编辑 vim ~/.bash_profile 文件添加下面两行配置。

export ELASTIC_SEARCH=/usr/local/elasticsearch-5.3.0/bin
export PATH=${ELASTIC_SEARCH}:${PATH}

上面操作完成记得 source ~/.bash_profile 立即生效。

作为守护进程启动 #

加上 -p 参数将进程id保存到es.pid文本文件里面。

elasticsearch -d -p es.pid

通过 es.pid 文件中的进程id 将其杀掉

kill `cat es.pid`

命令行中修改配置 #

任何Elasticsearch配置都可以通过命令行修改,但是要遵循elasticsearch的语法,每个参数前面跟上-E,如:

elasticsearch -d -Ecluster.name=my_cluster -Enode.name=node_1

管理 #

健康状态

curl 'localhost:9200/_cat/health?v'
# epoch      timestamp cluster status node.total node.data shards pri relo init unassign pending_tasks max_task_wait_time active_shards_percent 
# 1473669150 16:32:30  es-test green           1         1      0   0    0    0        0             0 

列出节点

curl 'localhost:9200/_cat/nodes?v'
# host      ip        heap.percent ram.percent load node.role master name   
# 127.0.0.1 127.0.0.1            6          16 0.00 d         *      node-1 

列出索引

curl 'localhost:9200/_cat/indices?v'
health status index pri rep docs.count docs.deleted store.size pri.store.size

对比理解 #

Relational DB -> Databases -> Tables -> Rows -> Columns
Elasticsearch -> Indices   -> Types  -> Documents -> Fields

在Elasticsearch中,文档归属于一种类型(type),而这些类型存在于索引(index)中,我们可以画一些简单的对比图来类比传统关系型数据库

Elasticsearch集群可以包含多个索引(indices)(数据库),每一个索引可以包含多个类型(types)(表),每一个类型包含多个文档(documents)(行),然后每个文档包含多个字段(Fields)(列)。

插件安装 #

# 列出当前插件列表
sudo bin/elasticsearch-plugin list
# 删除插件
sudo bin/elasticsearch-plugin remove [pluginname]
# 更新插件
sudo bin/elasticsearch-plugin remove [pluginname]
sudo bin/elasticsearch-plugin install [pluginname]
# 通过URL或者系统文件夹安装插件
sudo bin/elasticsearch-plugin install [url] 
sudo bin/elasticsearch-plugin install file:///path/to/plugin.zip
sudo ES_JAVA_OPTS="-Djavax.net.ssl.trustStore=/path/to/trustStore.jks" bin/elasticsearch-plugin install https://....
# 某些插件需要更多权限
# 这些插件将列出所需的权限,并要求用户进行确认,然后再继续安装。
sudo bin/elasticsearch-plugin install --batch [pluginname]
# 如果您的elasticsearch.yml配置文件位于自定义位置,
# 则需要在使用插件脚本时指定配置文件的路径。
sudo bin/elasticsearch-plugin -Epath.conf=/path/to/custom/config/dir install <plugin name>
# 通过代理安装插件
sudo ES_JAVA_OPTS="-Dhttp.proxyHost=host_name -Dhttp.proxyPort=port_number -Dhttps.proxyHost=host_name -Dhttps.proxyPort=https_port_number" bin/elasticsearch-plugin install analysis-icu
# windows中通过代理安装插件
set ES_JAVA_OPTS="-Dhttp.proxyHost=host_name -Dhttp.proxyPort=port_number -Dhttps.proxyHost=host_name -Dhttps.proxyPort=https_port_number"
bin\elasticsearch-plugin install analysis-icu
# 如果您依赖某些插件,可以通过将plugin.mandatory设置添加到config / elasticsearch.yml文件中来定义强制插件,
plugin.mandatory: analysis-icu,lang-js

⚠️ 注意:

插件 #

插件elasticsearch-head不能通过命令安装,这是一个图形界面管理elasticsearch。

# 修改 elasticsearch/config/elasticsearch.yml 添加
http.cors.enabled: true
http.cors.allow-origin: "*"

下载 elasticsearch-head 或者 git clone 到随便一个文件夹

cd /path/to/elasticsearch-head
npm install
npm start
http://localhost:9100/

MySQL数据导入 #

错误处理 #

注:ES有执行脚本的能力,因安全因素,不能在root用户下运行,强行运行会报如下错误:

org.elasticsearch.bootstrap.StartupException: java.lang.RuntimeException: can not run elasticsearch as root

groupadd elsearch   # 增加es组
useradd elsearch -g elsearch -p elasticsearch  # 增加elsearch用户并附加到elsearch组
chown -R elsearch:elsearch elasticsearch-5.1.1             # 给目录权限
su elsearch # 使用es用户

注: network.host: 127.0.0.1

bound or publishing to a non-loopback or non-link-local address, enforcing bootstrap checks
ERROR: bootstrap checks failed

我通过设置Nginx代理来访问

参考文档 #