第一次在博客园写东西,原来都是写在本地...

  最近公司用到ES, 自己就去学了ES相关的知识,不得不说IT真实一门活到老学到老的职业,在看ES的时候就可以发散出一大推的知识点,这次主要记录下elk的搭建,好了废话不多说,直接进正文

官网:https://www.elastic.co/cn/downloads/

demo:https://gitlab.tuhu.cn/xuwenxiang/my-es-client

项目结构

解压之后可以看到下面这些文件夹

    • bin,存放启动ES等命令脚本
    • config,存放ES的配置文件,ES启动时会读取其中的内容
    • elasticsearch.yml,ES的集群信息、对外端口、内存锁定、数据目录、跨域访问等属性的配置
    • jvm.options,ES使用Java写的,此文件用于设置JVM相关参数,如最大堆、最小堆log4j2.properties,ES使用log4j作为其日志框架
    • data,数据存放目录(索引数据)
    • lib,ES依赖的库
    • logs,日志存放目录
    • modules,ES的各功能模块
    • plugins,ES的可扩展插件存放目录,如可以将ik中文分词插件放入此目录,ES启动时会自动加载

属性配置

cluster.name: xuecheng #集群名称,默认为elasticsearch
node.name: xc_node_1 #节点名称,一个ES实例就是一个节点(通常一台机器上只部署一个ES实例)
network.host: 0.0.0.0 #IP绑定,0.0.0.0表示所有IP都可访问到此ES实例
http.port: 9200 #通过此端口以RESTful的形式访问ES
transport.tcp.port: 9300 #ES集群通信使用的端口
node.master: true #此节点是否能够作为主节点
node.data: true #此节点是否存放数据
discovery.zen.ping.unicast.hosts: ["0.0.0.0:9300", "0.0.0.0:9301"] #集群其他节点的通信端口,ES启动时会发现这些节点
discovery.zen.minimum_master_nodes: 1 #主节点数量的最少值,此值的计算公式为(master_eligible_nodes/2)+1,即可作为主节点的节点数/2+1
node.ingest: true #此节点是否作为协调节点,当索引库具有多个分片并且各分片位于不同节点上时,如果收到查询请求的节点发现要查询的数据在另一个节点的分片上,那么作为协调节点的该节点将会转发此请求并最终响应结果数据
bootstrap.memory_lock: false #是否锁住ES占用的内存,此项涉及到OS的swap概念,当ES空闲时操作系统可能会把ES占用的内存数据暂时保存到磁盘上,当ES活动起来时再调入内存,如果要求ES时刻保持迅速响应状态则可设置为true,那么ES的运行内存永远不会被交换到磁盘以避免交换过程带来的延时
node.max_local_storage_nodes: 2 #本机上的最大存储节点数,多个ES实例可以共享一个数据目录,这一特性有利于我们在开发环境的一台机器上测试集群机制,但在生产环境下建议设置为1,并且官方也建议一台集群仅部署一个ES实例

path.data: D:\software\es\elasticsearch-6.2.1\data #ES的数据目录
path.logs: D:\software\es\elasticsearch-6.2.1\logs #ES的日志目录

http.cors.enabled: true #是否允许跨域访问,后面通过一个可视化ES管理插件时需要通过js跨域访问此ES
http.cors.allow-origin: /.*/ #设置所有域均可跨域访问此ES
  • 特别注意最后两个属性,ElasticSearch5之后出于安全性的加强默认不允许跨域,所以本地测试的时候会出现跨域的问题,需要加上着两个属性

elasticsearch-head可视化插件

git clone git://github.com/mobz/elasticsearch-head.git
cd elasticsearch-head
npm install
npm run start

这里注意一个问题,上述es的属性配置中要加上允许跨域

01-26 06:47