您的位置:首页 > 教程 > 服务端类 > Golang > Elasticsearch配置文件示例示范

Elasticsearch配置文件示例示范

2022-04-19 20:52:26 来源:易采站长站 作者:

Elasticsearch配置文件示例示范

目录
一 前言二 elasticsearch.yml2.1 Cluster2.2 Node2.3 Paths2.4 Network2.5 Discovery2.6 Memory2.7 Gateway2.8 Various三 jvm.options四 log4j2.properties

一 前言

在elasticsearch\config目录下,有三个核心的配置文件:

elasticsearch.yml,es相关的配置。jvm.options,Java jvm相关参数的配置。log4j2.properties,日志相关的配置,因为es采用了log4j的日志框架。

这里以elasticsearch6.5.4版本为例,并且由于版本不同,配置也不太也一样,仅作参考!

二 elasticsearch.yml

2.1 Cluster

配置集群名称,由多个es实例组成的集群,有一个共同的名称。
cluster.name: my-application
集群端口设置。
transport.tcp.port: 9300
防止同一个shard的主副本存在同一个物理机上。
cluster.routing.allocation.same_shard.host:true
初始化数据恢复时,并发恢复线程的个数,默认是4个。
cluster.routing.allocation.node_initial_primaries_recoveries: 4
添加删除节点或者负载均衡时并发恢复线程的个数。默认是4个。
cluster.routing.allocation.node_concurrent_recoveries: 4

2.2 Node

节点名称配置,一个es实例其实是一个es进程,在集群中被称为节点。如果一个服务器上配置集群,各节点的名称不能重复。
node.name: node-1
为节点添加自定义属性,
node.attr.rack: r1
该节点是否有资格成为主节点,默认为true。
node.master: true
设置节点是否存储数据。
node.data: true
设置默认主分片的个数,默认为5片,需要说明的是,主分片一经分配则无法更改。
index.number_of_shards: 5
设置默认复制分片的个数,默认一个主分片对应一个复制分片,需要说明的是,复制分片可以手动调整。
index.number_of_replicas: 1
设置数据恢复时限制的带宽,默认0及不限制。
indices.recovery.max_size_per_ser: 0
设置这个参数来限制从其它分片恢复数据时最大同时打开并发流的个数,默认为5。
indices.recovery.concurrent_streams: 5
设置数据恢复时限制的带宽,默认0及不限制。
indices.recovery.max_size_per_ser: 0
设置这个参数来限制从其它分片恢复数据时最大同时打开并发流的个数,默认为5。
indices.recovery.concurrent_streams: 5

2.3 Paths

存储数据路径设置,多个路径以英文状态的逗号分隔,默认根目录下的conf目录。
path.data: /path/to/data
# path.data: /path/to/data1,/path/to/data1
设置临时文件存储路径,默认是es目录下的work目录。
path.work: /path/to/work
日志文件路径,默认为根目录下的logs目录。
path.logs: /path/to/logs
设置日志文件的存储路径,默认是es目录下的logs目录。
path.logs: /path/to/logs
设置插件的存放路径,默认是es目录下的plugins目录。
path.plugins: /path/to/plugins

2.4 Network

为es实例绑定特定的IP地址。
network.host: 192.168.0.1

上面的设置可以拆分为两个参数。

network.bind_host: 192.168.0.1 	# 设置绑定的ip地址,ipv4或ipv6都可以
network.publish_host: 192.168.0.1  # 设置其它节点和该节点交互的ip地址,如果不设置它会自动判断,值必须是个真实的ip地址
为es实例设置特定的端口,默认为9200端口。
http.port: 9200

2.5 Discovery

设置是否打开多播发现节点,默认是true。
discovery.zen.ping.multicast.enabled: true
配置es单播发现列表,在es启动时,通过这个列表发现别的es实例,从而加入集群。
discovery.zen.ping.unicast.hosts: ["host1", "host2"]
discovery.zen.ping.unicast.hosts: ["10.0.0.1", "10.0.0.3:9300", "10.0.0.6[9300-9400]"]
discovery.zen.minimum_master_nodes设置是告诉集群有多少个节点有资格成为主节点,一般的规则是集群节点数除以2(向下取整)再加一。比如3个节点集群要设置为2,这个试着是为了防止脑裂问题。设置集群中自动发现其它节点时ping连接超时时间,默认为3秒,对于比较差的网络环境可以高点的值来防止自动发现时出错。
discovery.zen.ping.timeout: 3s

2.6 Memory

启动时锁定内存,默认为true,因为当jvm开始swapping时es的效率 会降低,所以要保证它不swap,可以把ES_MIN_MEM和ES_MAX_MEM两个环境变量设置成同一个值,并且保证机器有足够的内存分配给es。 同时也要允许elasticsearch的进程可以锁住内存,linux下可以通过ulimit -l unlimited命令
bootstrap.memory_lock: true
禁止swapping交换。
bootstrap.mlockall: true

2.7 Gateway

设置是否压缩tcp传输时的数据。默认是false不压缩。
transport.tcp.compress: true
设置内容的最大容量,默认是100mb。
http.max_content_length: 100mb
是否使用http协议对外提供服务。默认为true。
http.enabled: false
设置gateway的类型,默认为本地文件系统,也可以设置分布式文件系统、Hadoop的HDFS或者AWS的都可以。
gateway.type: local
在完全重新启动集群之后阻塞初始恢复,直到启动N个节点为止,详情参见Recovery
gateway.recover_after_nodes: 3
设置初始化数据恢复进程的超时时间。默认是5分钟。
gateway.recover_after_time: 5m
设置该集群中节点的数量,默认为2个,一旦这N个节点启动,就会立即进行数据恢复。
gateway.expected_nodes: 2

2.8 Various

删除索引时需要显式名称。
action.destructive_requires_name: true

三 jvm.options

设置jvm堆的大小,最大值和最小值,应该是一致的,并且应该根据你的物理内存决定。
-Xms1g     # 设置最小堆为1g
-Xmx1g		# 设置最大堆为1g

四 log4j2.properties

这个配置文件,我们一般不修改其配置。

以上就是Elasticsearch配置文件示例示范的详细内容,更多关于Elasticsearch配置文件的资料请关注易采站长站其它相关文章!

如有侵权,请联系QQ:279390809 电话:15144810328

相关文章

  • golang用什么开发工具?

    golang用什么开发工具?

    golang用的开发工具有:1、Go Revive,是一个Go语言的代码质量检测工具;2、Go Callvis,可以用来可视化Go程序的调用图;3、Gaia,高效,快速,轻量级,并且对开发人员友好。golang用的开发工具有:1、Go Reviverevive 是一个 Go 语言的代码质量检测工具(Linter for Go),具有快速、可配置、可扩展、灵活和美观等特性,可作为 golint 的替
    2020-08-07
  • golang是多线程模式吗?

    golang是多线程模式吗?

    golang是多线程模式的,golang的线程模型是M P G模型,整体上Go程与内核线程是多对多对应的,因此首先来讲就一定是多线程的。golang是多线程模式。 由于gmp中的p与m是将p绑定与m内核线程上,而后p的最大数量有GOPROCESS确定,而M内核线程的数量会由go去限制为10K个,但是由于内核原因做不到这么多,所以这个限制就当做没有吧。拿个图明确一下Golang有些所谓的M比N模型,
    2020-08-07
  • golang用什么开发工具?

    golang用什么开发工具?

    golang用的开发工具有:1、Go Revive,是一个Go语言的代码质量检测工具;2、Go Callvis,可以用来可视化Go程序的调用图;3、Gaia,高效,快速,轻量级,并且对开发人员友好。golang用的开发工具有:1、Go Reviverevive 是一个 Go 语言的代码质量检测工具(Linter for Go),具有快速、可配置、可扩展、灵活和美观等特性,可作为 golint 的替
    2020-08-07
  • golang是单进程的吗?

    golang是单进程的吗?

    golang不是单进程的,而是多线程;golang的线程模型是M P G模型,整体上Go程与内核线程是多对多对应的,因此首先来讲就一定是多线程的。golang不是单进程的,而是多线程。Golang有些所谓的M比N模型,M个线程下可以创建N个go routine,一般而言N远大于M,本质上属于多线程模型,但是协程的调度由Go的runtime决定,强调开发者应该使用channel进行协程之间的同步。至
    2020-08-07
  • 代码详解使用Go基于WebSocket构建视频直播弹幕系统

    代码详解使用Go基于WebSocket构建视频直播弹幕系统

    (1)业务复杂度介绍开门见山,假设一个直播间同时500W人在线,那么1秒钟1000条弹幕,那么弹幕系统的推送频率就是: 500W * 1000条/秒=50亿条/秒 ,想想B站2019跨年晚会那次弹幕系统得是多么的NB,况且一个大型网站不可能只有一个直播间!使用Go做WebSocket开发无非就是三种情况:使用Go原生自带的库,也就是 golang.org/x/net ,但是这个官方库真是出了奇Bu
    2020-08-07
  • PHP语法和Go语法有什么差异?对比介绍

    PHP语法和Go语法有什么差异?对比介绍

    本篇文章给大家对比一下PHP语法和Go语法,带大家了解一下PHP语法和Go语法之间的差异。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。Go 是由 Google 设计的一门静态类型的编译型语言。它有点类似于 C,但是它包含了更多的优点,比如垃圾回收、内存安全、结构类型和并发性。它的并发机制使多核和网络机器能够发挥最大的作用。这是 GoLang 的最佳卖点之一。此外,Go 速度快,
    2020-08-07
  • golang需要什么基础?

    golang需要什么基础?

    golang需要什么基础?golang需要的基础是:Go语言语法特别简单简洁,有C的底子更好,差一些也没关系。前提是你要真心想学,才有足够的动力去学。1、初学Go语言首先弄懂基础语法和概念:基本数据类型、Struct、Array、map、Slice、指针、接口、map、内置函数,常用工具包等,还有接口和Slice的底层数据结构。这些不需要弄特别懂,能自己理解并自己描述我觉得就可以了,关键在实践和应
    2020-08-07
  • golang为什么那么火?

    golang为什么那么火?

    golang为什么那么火?golang那么火的原因:1, Concurrency的原生支持通过语言原生的Goroutine和Channel,很好的支持了Concurrency。你可以把Goroutine理解为非常轻量级的Thread。一个Goroutine只占用2KB的内存,但是一个Thread要占用1MB的内存。Goroutine的创建、销毁和切换的开销,相对于线程来说特别低。你可以随时起上千个
    2020-08-07