下载安装
Elasticsearch的安装比较简单,下载下来直接解压到指定的目录就可以了。关键在于配置,这里我们下载的是7.1.1版本的Elasticsearch。
elasticsearch.yml配置文件
elasticsearch配置中最重要的是前面几项:
-
cluster.name 表示集群的名字,默认是elasticsearch,最好设置一下,因为客户端连接会用到
-
node.name 表示节点的名字,是为了方便区分不同的节点
-
node.master 为true表示这个节点有做为主节点的资格
-
node.data 为true表示这个节点可以存储数据
-
path.data 数据目录
-
path.logs 日志目录
不同的场景可以使用不同的组合,node.master: true,node.data:true表示又要协调客户端请求,又要存储数据。node.master:false,node.data:true表示只存储数据。node.master:true,node.data: false只协调客户端请求,不存储数据。node.master:false,node.data:false只处理客户端请求。
# https://www.elastic.co/guide/en/elasticsearch/reference/index.html
cluster.name: my-es
node.name: node-1
node.master: true
node.data: true
# 数据存放目录,多个目录使用逗号分割
path.data: F:\component\esdata\data1
# 绑定HTTP端口
http.port: 9200
# 日志目录
path.logs: F:\component\esdata\logs1
# 绑定地址,以便于外网访问
#network.host: 0.0.0.0
#表示开启跨域访问支持,默认为false
http.cors.enabled: true
#表示跨域访问允许的域名地址,,可支持正则表达式,这里“*”表示允许所有域名访问
http.cors.allow-origin: "*"
#允许跨域访问头部信息
#http.cors.allow-headers: "X-Requested-With,Content-Type, Content-Length, Authorization"
# 配置host以便于节点启动的时候更快发现其他节点,默认["127.0.0.1", "[::1]"]
#discovery.seed_hosts: ["host1", "host2"]
# Bootstrap the cluster using an initial set of master-eligible nodes:
#cluster.initial_master_nodes: ["node-1", "node-2","node-3"]
#设置true用来锁住物理内存
#bootstrap.memory_lock: true
#索引字段缓存大小
#indices.fielddata.cache.size: 50mb
#设置集群中master节点初始列表,可通过这些
#discovery.zen.ping.unicast.hosts: ["192.168.37.134:9300","192.168.37.135:9300","192.168.37.136:9300"]
#配置当前集群最少的master节点数,默认为1
#discovery.zen.minimum_master_nodes: 1
jvm.options配置
jvm配置主要是配置启动Elasticsearch需要的JVM参数,一般情况不用配置,最常用的配置-Xms和-Xmx就是Elasticsearch使用的内存初始值和最大值。本地测试可以调小一点,线上可以调大一点。
-Xms512M
-Xmx512M
-XX:+UseConcMarkSweepGC
-XX:CMSInitiatingOccupancyFraction=75
-XX:+UseCMSInitiatingOccupancyOnly
-XX:+DisableExplicitGC
-XX:+AlwaysPreTouch
-server
-Xss1m
-Djava.awt.headless=true
-Dfile.encoding=UTF-8
-Djna.nosys=true
-Djdk.io.permissionsUseCanonicalPath=true
-Dio.netty.noUnsafe=true
-Dio.netty.noKeySetOptimization=true
-Dio.netty.recycler.maxCapacityPerThread=0
-Dlog4j.shutdownHookEnabled=false
-Dlog4j2.disable.jmx=true
-Dlog4j.skipJansi=true
-XX:+HeapDumpOnOutOfMemoryError
启动:
elasticsearch
配置完成就可以在浏览器中访问: http://localhost:9200/
集群的方式
集群(cluster)是一组具有相同cluster.name的节点集合,他们协同工作,共享数据并提供故障转移和扩展功能,当然一个节点也可以组成一个集群。
启动Elasticsearch集群只需要多复制几个Elasticsearch,修改一下基本配置就可以了,主要是修改节点名称、日志目录和数据目录。 注意,集群方式只需要有一个节点配置http.port: 9200就可以了,否则会提示端口已经绑定而起不起来,一般情况主节点配置一下就可以了。
elasticsearch-head工具
Elasticsearch提供了HTTP方式的交互方式,我们可以通过curl、postman等工具直接发送http请求来获取相关信息,但是很多时候比较麻烦,我们可以通过elasticsearch-head来查看相关的信息。 es-head下载,可以使用git的方式,或者直接下载zip然后解压。
elasticsearch-head是运行需要node.js需要先安装一下node.js,顺便就吧npm也安装了。进入elasticsearch-head的根目录,执行下面的命令:
npm install
npm run start
然后就可以访问: http://localhost:9100/
端口可以在Gruntfile.js文件中修改:
connect: {
server: {
options: {
port: 9100,
base: '.',
keepalive: true
}
}
}
注意因为elasticsearch-head使用的端口是9100,Elasticsearch使用的是9200,JavaScript代码访问的时候有跨越问题,所以使用elasticsearch-head,在Elasticsearch的elasticsearch.yml配置文件中一定要配置下面2项。
http.cors.enabled: true
http.cors.allow-origin: "*"
我们使用elasticsearch-head创建2个索引,分片是3,副本是1。
如上图所示,我们可以看到每一个6个分片被均匀的分布到了3个节点上,主分片和副本分片不在同一个节点,这样就算一个节点失效,也保证了可用。
来源:oschina
链接:https://my.oschina.net/u/2474629/blog/3061401