配置项,按需选择node
cluster.name: elasticsearch # 配置的集群名称,默认是elasticsearch,es服务会经过广播方式自动链接在同一网段下的es服务,经过多播方式进行通讯,同一网段下能够有多个集群,经过集群名称这个属性来区分不一样的集群。 node.name: "Franz Kafka" # 当前配置所在机器的节点名,你不设置就默认随机指定一个name列表中名字,该name列表在es的jar包中config文件夹里name.txt文件中,其中有不少做者添加的有趣名字。 node.master: true 指定该节点是否有资格被选举成为node(注意这里只是设置成有资格, 不表明该node必定就是master),默认是true,es是默认集群中的第一台机器为master,若是这台机挂了就会从新选举master。 node.data: true # 指定该节点是否存储索引数据,默认为true。 index.number_of_shards: 5 # 设置默认索引分片个数,默认为5片。 index.number_of_replicas: 1 # 设置默认索引副本个数,默认为1个副本。若是采用默认设置,而你集群只配置了一台机器,那么集群的健康度为yellow,也就是全部的数据都是可用的,可是某些复制没有被分配 # (健康度可用 curl 'localhost:9200/_cat/health?v' 查看, 分为绿色、黄色或红色。绿色表明一切正常,集群功能齐全,黄色意味着全部的数据都是可用的,可是某些复制没有被分配,红色则表明由于某些缘由,某些数据不可用)。 path.conf: /path/to/conf # 设置配置文件的存储路径,默认是es根目录下的config文件夹。 path.data: /path/to/data # 设置索引数据的存储路径,默认是es根目录下的data文件夹,能够设置多个存储路径,用逗号隔开,例: # path.data: /path/to/data1,/path/to/data2 path.work: /path/to/work # 设置临时文件的存储路径,默认是es根目录下的work文件夹。 path.logs: /path/to/logs # 设置日志文件的存储路径,默认是es根目录下的logs文件夹 path.plugins: /path/to/plugins # 设置插件的存放路径,默认是es根目录下的plugins文件夹, 插件在es里面广泛使用,用来加强原系统核心功能。 bootstrap.mlockall: true # 设置为true来锁住内存不进行swapping。由于当jvm开始swapping时es的效率 会下降,因此要保证它不swap,能够把ES_MIN_MEM和ES_MAX_MEM两个环境变量设置成同一个值,而且保证机器有足够的内存分配给es。 同时也要容许elasticsearch的进程能够锁住内# # 存,linux下启动es以前能够经过`ulimit -l unlimited`命令设置。 network.bind_host: 192.168.0.1 # 设置绑定的ip地址,能够是ipv4或ipv6的,默认为0.0.0.0,绑定这台机器的任何一个ip。 network.publish_host: 192.168.0.1 # 设置其它节点和该节点交互的ip地址,若是不设置它会自动判断,值必须是个真实的ip地址。 network.host: 192.168.0.1 # 这个参数是用来同时设置bind_host和publish_host上面两个参数。 transport.tcp.port: 9300 # 设置节点之间交互的tcp端口,默认是9300。 transport.tcp.compress: true # 设置是否压缩tcp传输时的数据,默认为false,不压缩。 http.port: 9200 # 设置对外服务的http端口,默认为9200。 http.max_content_length: 100mb # 设置内容的最大容量,默认100mb http.enabled: false # 是否使用http协议对外提供服务,默认为true,开启。 gateway.type: local # gateway的类型,默认为local即为本地文件系统,能够设置为本地文件系统,分布式文件系统,hadoop的HDFS,和amazon的s3服务器等。 gateway.recover_after_nodes: 1 # 设置集群中N个节点启动时进行数据恢复,默认为1。 gateway.recover_after_time: 5m # 设置初始化数据恢复进程的超时时间,默认是5分钟。 gateway.expected_nodes: 2 # 设置这个集群中节点的数量,默认为2,一旦这N个节点启动,就会当即进行数据恢复。 cluster.routing.allocation.node_initial_primaries_recoveries: 4 # 初始化数据恢复时,并发恢复线程的个数,默认为4。 cluster.routing.allocation.node_concurrent_recoveries: 2 # 添加删除节点或负载均衡时并发恢复线程的个数,默认为4。 indices.recovery.max_size_per_sec: 0 # 设置数据恢复时限制的带宽,如入100mb,默认为0,即无限制。 indices.recovery.concurrent_streams: 5 # 设置这个参数来限制从其它分片恢复数据时最大同时打开并发流的个数,默认为5。 discovery.zen.minimum_master_nodes: 1 # 设置这个参数来保证集群中的节点能够知道其它N个有master资格的节点。默认为1,对于大的集群来讲,能够设置大一点的值(2-4) discovery.zen.ping.timeout: 3s # 设置集群中自动发现其它节点时ping链接超时时间,默认为3秒,对于比较差的网络环境能够高点的值来防止自动发现时出错。 discovery.zen.ping.multicast.enabled: false # 设置是否打开多播发现节点,默认是true。 discovery.zen.ping.unicast.hosts: ["host1", "host2:port", "host3[portX-portY]"] # 设置集群中master节点的初始列表,能够经过这些节点来自动发现新加入集群的节点。
elasticsearch7新增两个以下配置项,集群协调子系统linux
discovery.seed_hosts cluster.initial_master_nodes 官方文档示例: discovery.seed_hosts: - 192.168.1.10:9300 - 192.168.1.11 - seeds.mydomain.com cluster.initial_master_nodes: - master-node-a - master-node-b - master-node-c
elasticsearch的广播和单播机制,生产环境下应当采用单播方式,所以仅仅配置network.host没法在多机集群环境下发现其余节点,必须配置network.publish_host。
这里采用yml+docker-compose完成伪分布式集群的搭建。真分布式集群安装仅需稍做修改,这里就不赘述了。
注意点:在宿主机上【宿主机】修改/etc/sysctl.conf 添加vm.max_map_count=262144。启动sysctl -p
master elasticsearch.ymldocker
cluster.name: docker-cluster node.name: master node.master: true node.data: true network.host: 0.0.0.0 network.publish_host: 192.168.31.45 # 这里是我内网ip cluster.initial_master_nodes: - master http.cors.enabled: true http.cors.allow-origin: "*"
master docker-compose.ymlbootstrap
version: '3.7' services: es: image: docker.elastic.co/elasticsearch/elasticsearch:7.1.1 container_name: master environment: - "ES_JAVA_OPTS=-Xms512m -Xmx512m" volumes: - esdata:/usr/share/elasticsearch/data - ./elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml ports: - 9200:9200 - 9300:9300 volumes: esdata:
slave elasticsearch.yml服务器
cluster.name: docker-cluster node.name: slave node.master: false node.data: true network.host: 0.0.0.0 network.publish_host: 192.168.31.45 http.port: 9201 transport.tcp.port: 9301 discovery.seed_hosts: - 192.168.31.45:9300 http.cors.enabled: true http.cors.allow-origin: "*"
slave docker-compose.yml网络
version: '3.7' services: es: image: docker.elastic.co/elasticsearch/elasticsearch:7.1.1 container_name: slave environment: - "ES_JAVA_OPTS=-Xms512m -Xmx512m" volumes: - esdata2:/usr/share/elasticsearch/data - ./elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml ports: - 9201:9201 - 9301:9301 volumes: esdata2:
for Elasticsearch 5.x: docker run -p 9100:9100 mobz/elasticsearch-head:5 for Elasticsearch 2.x: docker run -p 9100:9100 mobz/elasticsearch-head:2 for Elasticsearch 1.x: docker run -p 9100:9100 mobz/elasticsearch-head:1 for fans of alpine there is mobz/elasticsearch-head:5-alpine open http://localhost:9100/
集群搭建完成,接下来就是分词操做并发