在 Elasticsearch Service 上创建部署时,将自动设置一个主节点和两个数据节点。通过从 tar 或 zip 存档安装,可以在本地启动 Elasticsearch 的多个实例,以查看多节点集群的行为。
cd /usr/local # 进入此目录
curl -L -O https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.3.2-linux-x86_64.tar.gz
tar -xvf elasticsearch-7.3.2-linux-x86_64.tar.gz
cd /usr/local/elasticsearch-7.3.2/bin # 进入目录
su es # 切换用户es
./elasticsearch # 启动Elasticsearch
浏览器中访问http://ip地址:9200
进入elasticsearch-7.3.2/bin
目录下执行./elasticsearch
时出现了这个错误,原因就是es因为安全问题拒绝使用root用户启动。解决办法就是创建非root用户。
groupadd es # 添加用户组es
useradd es -g es -p password # -g 指定组 -p 密码
chown es:es -R elasticsearch-7.3.2/ # -R 处理指定目录以及其子目录下的所有文件
cd /elasticsearch-7.3.2/bin # 进入目录
su es # 切换用户es
./elasticsearch # 启动Elasticsearch
又报错了could not find java in JAVA_HOME or bundled at /root/elasticsearch-7.3.2/jdk/bin/java
出现这个问题,要么是没装jdk,要么是环境变量有问题。突然意识到自己还没装jdk,下面来安装jdk。
下载jdk-8u333-linux-x64.tar.gz
由于我是部署在自己的云服务器上,因此用的xshell内置的ftp文件传输工具将下载的tar.gz上传至linux服务器上。
sudo tar -zxvf jdk-8u333-linux-x64.tar.gz
mkdir /usr/local/java
sudo mv jdk1.8.0_333 /usr/local/java
看到网上很多教程都是修改的用户配置文件/etc/profile,实际上应该修改的是系统配置文件。
vim ~/.bashrc # 编辑系统配置文件
按下i,然后将以下配置粘贴到最末尾:
export JAVA_HOME=/usr/local/java/jdk1.8.0_333
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
然后按下esc键,输入:wq并回车保存配置。
java -version
额,想不到在排除了以上几个问题后,启动Elasticsearch服务时还是抽风了。
出现这个问题的原因就是,我们需要切换到非root用户去启动Elasticsearch服务,但实际上Elasticsearch被我们安装到了root目录下。
mv elasticsearch-7.3.2 /usr/local
cd /usr/local/elasticsearch-7.3.2/bin # 进入目录
su es # 切换用户es
./elasticsearch # 启动Elasticsearch
报这个错说明服务器ip配置不对,修改elasticsearch.yml中network.host为内网ip。
报这个错说明系统虚拟内存默认最大映射数为65530,无法满足ES系统要求,需要调整为262144以上。
#修改文件
sudo vim /etc/sysctl.conf
#添加参数
...
vm.max_map_count = 262144
#重新加载配置
sysctl -p
报这个错说明缺少默认的配置,至少应该配置以下配置中的一个:
discovery.seed_hosts: 集群主机列表
discovery.seed_providers: 基于配置文件配置集群主机列表
cluster.initial_master_nodes: 启动时初始化的参与选主的node,生产环境必填
vim elasticsearch.yml # 修改配置
#添加配置
discovery.seed_hosts: ["127.0.0.1"]
Elasticsearch 有三个配置文件,存放在 config 目录下:
elasticsearch.yml 用于配置 Elasticsearch
jvm.options 用于配置 Elasticsearch JVM 的设置
log4j2.properties 用户配置 Elasticsearch 日志
JVM 参数设置
日志配置
重要Elasticsearch配置
重要的系统参数
首先进入https://www.elastic.co/cn/downloads/past-releases/kibana-7-3-2下载好与Elasticsearch相同版本的安装包。然后把下载好的安装包上传到服务器上去。
tar -xvf kibana-7.3.2.tar.gz # 解压,注意换成你的压缩包名
cd kibana-7.3.2-linux-x86_64 # 进入目录
vim config/kibana.yml # 修改配置文件,修改以下内容
server.port: 5601 # 端口
server.host: "内网ip" # ip
elasticsearch.hosts: ["http://内网ip:9200"] # Elasticsearch的url
chown es:es -R kibana-7.3.2-linux-x86_64/
然后启动Elasticsearch服务。
cd /usr/local/kibana-7.3.2-linux-x86_64/bin # 进入目录
su es # 切换用户es
./kibana # 启动
浏览器中访问http://ip地址:5601/app/kibana
出现这个问题说明是没连上Elasticsearch,看一下elasticsearch.yml配置是否有问题,尤其是一些涉及到ip的地方。所有涉及到ip的地方我都写的服务器内网ip,而不是外网ip、localhost、127.0.0.1这些。
先看下这篇博客,以便对Elasticsearch有一个概念上的认识:
语法基础博客1:这篇博客将文档、文档元数据、索引等说的明明白白
教程在此,对于几种分词器也有说明
这个博客也很不错,也可以看看
Elasticsearch 7.X 数据类型
教程在此
1 在es目录下安装elasticdump插件
npm install elasticdump -g
2 启动es服务
3 导出数据为json格式
在自己电脑上,进入准备存放json文件的目录,执行以下命令
elasticdump --input http://ip地址:9200/zhsf_3_0 --output ./zhsf_3_0_mapping.json --type=mapping
elasticdump --input http://ip地址:9200/zhsf_3_0 --output ./zhsf_3_0.json --type=data
第一条复制结构,第二条复制数据
4 通过json文件导入数据
elasticdump --input ./zhsf_4_0_mapping.json --output http://localhost:9200/zhsf_4_0 --type=mapping
elasticdump --input ./zhsf_4_0.json --output "http://localhost:9200/zhsf_4_0"
Elasticsearch中文文档
博客1
博客2
博客3