做钓鱼网站的公司,网站搭建教程吾爱破解,中小型网站建设策划,建设网站需要准备哪些内容文/朱季谦 Elasticsearch是一个基于Lucene的搜索服务器。它提供一个分布式多用户能力的全文搜索引擎#xff0c;基于RESTful web接口#xff0c;Elasticsearch是用Java语言开发的。
关于Elasticsearch系列笔记#xff0c;主要从Elasticsearch的配置、核心组件、架构设计、使…文/朱季谦 Elasticsearch是一个基于Lucene的搜索服务器。它提供一个分布式多用户能力的全文搜索引擎基于RESTful web接口Elasticsearch是用Java语言开发的。
关于Elasticsearch系列笔记主要从Elasticsearch的配置、核心组件、架构设计、使用语法这四个方面来记录学习
本学习总结主要依赖《Elasticsearch实战与原理解析》一书的读书笔记我把自己阅读过程当中整理的读书笔记做成了一张脑图上传至了我的GitHub。 Elasticsearch的配置
Elasticsearch的配置比较重要有三个分别是elasticsearch.ymljvm.optionslog4j2.properties这些配置文件都默认放在/config/目录下。
elasticsearch.yml用于配置Elasticsearch基本信息主要包括集群、节点、ip、端口等jvm.options配置Elasticsearch依赖的JVM信息ES是Java写的当然需要考虑堆大小的分配log4j2.properties用于配置Elasticsearch日志记录中的各个属性
elasticsearch.yml关键参数
#集群名称默认是elasticsearch用于区分同一网段下的不同集群
cluster.name: my-application
#集群当中的节点名称用于区分同一个集群下的不同节点
node.name: node-1
#存储index索引数据的路径可以存储到多个路径例如path.data: /temp/data1/temp/data2/temp/data3
path.data: /temp/data
#日志文件的存储路径
path.logs: /temp/logs
#当前节点的ip地址允许通过外部服务器访问本地ES服务:
network.host: 0.0.0.0
#该节点有机会成为master节点
node.master: true
#该节点能够存储数据
node.data: true#######################设置head插件能够访问es###########
#设置可以跨域默认为false
http.cors.enabled: true
#支持所有域名访问
http.cors.allow-origin: *
#跨域允许设置的头信息默认为X-Requested-With,Content-Type,Content-Length
http.cors.allow-headers : X-Requested-With,Content-Type,Content-Length
#端口
http.port: 9250#设置集群主机列表每个值应采用hostport可实现主动发起ping集群主机信息
discovery.zen.ping.unicast.hosts: [host1,host2,host3]
#该参数表示只有足够的master候选节点时才可以选举出一个master该参数的值为master候选节点数量/21
#例如如果有3个master候选节点100个数据节点。则quorum3/212
discovery.zen.minimum_master_nodes: 2
#表示设置了节点与节点之间连接ping命令执行的超时时长。
discovery.zen.fd.ping_timeout: 100s
discovery.zen.ping.timeout: 100s
#主动关闭多播模式
discovery.zen.ping.multicast.enabled: false#默认90%超过阈值后所有索引都被修改为只读不可写状态
cluster.routing.allocation.disk.watermark.flood_stage: 90%
#默认90%超过阈值后索引的分片将不会被分配到该主机
cluster.routing.allocation.disk.watermark.high: 90%
elasticsearch.yml配置当中discovery.zen相关的参数设置主要是用来实现集群当中节点自动发现机制的存在多播模式与单播模式。
多播模式对某一个网络上的所有主机发送数据包。单播模式对特定的主机进行数据传送。
在Elasticsearch中发现机制默认被配置为使用单播模式以防止节点无意中加入集群。
jvm.options配置信息
Elasticsearch官方中文文档上介绍道“你几乎可以不去调整 Java 虚拟机 (JVM) 参数如何非要做的话你最有可能去修改heap size。”
也就是说这个配置文件里一般只需要关注堆大小的设置即可因为每一个运行环境服务器都不一样可以根据服务器具体情况来调整jvm.options里的堆大小。
#最小堆的值
-Xms1024m
#最大堆的值
-Xmx1024m
#表示老年代占用75%时就会触发垃圾回收
-XX:CMSInitiatingOccupancyFraction75设置规则一般如下
最小堆Xms与最大堆Xmx设置值相同避免当堆大小不够时再进行动态调整出现不确定因素
Elasticsearch性能调优与JVM性能调优类似都是通过JVM参数来进行调整优化至于如何能有效调整后续我若在实践过程中涉及过会补充这块的内容。
log4j2.properties配置信息
该配置是Elasticsearch日志记录中的各个属性设置包括日志保存设置、日志保留天数、慢日志、日志滚动等。
比较需要关注的一条参数是
#将日志滚动到路径后的数据里
appender.rolling.filePattern ${sys:es.logs.base_path}${sys:file.separator}${sys:es.logs.cluster_name}-%d{yyyy-MM-dd}-%i.log.gz
#使用基于时间的滚动策略
appender.rolling.policies.time.type TimeBasedTriggeringPolicy
# 每天滚动一次日志
appender.rolling.policies.time.interval 1
# 日志文件每达到 1GB 大小进行一次滚动
appender.rolling.policies.size.size 1GB所谓滚动日志就是将当天的日志整理成一个以某种各种命名例如时间的文件可存储历史的日志文件记录。我们在服务器的log目录下经常看到类似的历史日志被打包成压缩包形式这类被打包成压缩包的历史日志文件即为回滚日志。我们经常在mysql里听到过日志回滚其实回滚的即是这些原来被回滚存放在log目录下的日志文件。