开场白: es 可以 搭建 单点, 也可以搭建集群, 因为没看到谁 说明, 给人的感觉单点 不可以. 实际上是可以的, 单点安装head同样可以
注:新版es 需要jdk1.8环境,我的jdk使用的 sun的jdk,卸载了centos7上自带的 open jdk
项目搜索服务为了提升搜索服务体验,考虑引入搜索引擎,考虑范围在sorl和es,经过对比,es的性能和稳定性都已经得到了证实,相对sorl来说,简单些。
下面就是本次预研搭建测试平台上的es步骤:
1. 首先要有个linux环境
2. 安装es,当前最新版本为 Version: 6.4.1
3. es下载地址:https://www.elastic.co/cn/downloads/elasticsearch
4. es下载完成后,使用 xshell 工具的 rz命令上传到服务器
5. 安装前提:es支持用户输入的脚本执行,所以 es限制了在linux上的root用户执行,不能再root下启动es(需配置)
所以,使用普通用户启动
(注:因为安全考虑,避免出现不必要的问题,所以,建议使用普通用户)
root用户启动时报错:
[WARN ][o.e.b.ElasticsearchUncaughtExceptionHandler] [] uncaught exception in thread [main]
org.elasticsearch.bootstrap.StartupException: java.lang.RuntimeException: can not run elasticsearch as root
6. 解压文件: tar -xvzf filename.tr.gz
7. 启动es: 切换到 es /bin/目录下
后台启动: ./elasticsearch -d
直接启动es: ./elasticsearch
8. 启动后遇到错误提示:Exception in thread "main" java.nio.file.AccessDeniedException: 意思是 非Root账户,当前账户没有权限,也就是说,想要用普通用户操作es,那么普通用户还要有操作权限。需要切换到root权限下,输入:chown -R use:use /etc/es/ ,然后在切换回到普通用户,再次启动
9. 还没完,测试es是否启动成功。输入: curl http://localhost:9200 有报错了,提示:curl couldn't connect to host 拒绝连接
问题原因一般有2个,1线ping以下网络通不通,2防火墙,我用的centos7.3 默认带的防火墙是firewall
先查看以下防火墙的状态: systemctl status firewalld
开放端口后,不立即生效,需要重启防火墙
# 开启
service firewalld start
# 重启
service firewalld restart
# 关闭
service firewalld stop
开放端口时 没有--permanent 参数,重启后失效
# 查询端口是否开放
firewall-cmd --query-port=8080/tcp
# 开放80端口
firewall-cmd --permanent --add-port=80/tcp
# 移除端口
firewall-cmd --permanent --remove-port=8080/tcp
firewall-cmd --list-all
#重启防火墙(修改配置后要重启防火墙)
firewall-cmd --reload
# 参数解释
1、firwall-cmd:是Linux提供的操作firewall的一个工具;
2、--permanent:表示设置为持久;
3、--add-port:标识添加的端口;
我们可以将防火墙开放9200端口,也可以暂时关闭防火墙
请求成功时:
curl http://localhost:9200
{
"name" : "WktvJa5",
"cluster_name" : "elasticsearch",
"cluster_uuid" : "l0T4RI8ARtOm7N5wF3g_Pg",
"version" : {
"number" : "6.4.1",
"build_flavor" : "default",
"build_type" : "tar",
"build_hash" : "e36acdb",
"build_date" : "2018-09-13T22:18:07.696808Z",
"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名词:
1.几个基本名词
index: es里的index相当于一个数据库。
type: 相当于数据库里的一个表。
id: 唯一,相当于主键。
node:节点是es实例,一台机器可以运行多个实例,但是同一台机器上的实例在配置文件中要确保http和tcp端口不同(下面有讲)。
cluster:代表一个集群,集群中有多个节点,其中有一个会被选为主节点,这个主节点是可以通过选举产生的,主从节点是对于集群内部来说的。
shards:代表索引分片,es可以把一个完整的索引分成多个分片,这样的好处是可以把一个大的索引拆分成多个,分布到不同的节点上,构成分布式搜索。分片的数量只能在索引创建前指定,并且索引创建后不能更改。
replicas:代表索引副本,es可以设置多个索引的副本,副本的作用一是提高系统的容错性,当个某个节点某个分片损坏或丢失时可以从副本中恢复。二是提高es的查询效率,es会自动对搜索请求进行负载均衡。
--------------------- 本文来自 弓弓 的CSDN 博客 ,全文地址请点击:https://blog.csdn.net/sinat_28224453/article/details/51134978?utm_source=copy