• Elasticsearch 知识
    • 环境
    • Elasticsearch 5.5.0 安装
      • 先配置部分系统变量
      • 开始安装
      • RPM 安装后的一些配置位置说明
    • Elasticsearch 5.2.0 安装
      • 环境
      • zip 解压安装
    • 安装 Kibana 5.2.0
      • tar.gz 解压安装
    • Beats
      • Beats 资料
    • 安装 X-Pack 或是其他插件
    • 2.4.X
      • 安装 elasticsearch 集群
      • 下载
      • tar 解压安装
      • 构建 elasticsearch 集群
    • 资料

    Elasticsearch 知识

    环境

    • CentOS 7.3
    • root 用户
    • JDK 版本:1.8(最低要求),主推:JDK 1.8.0_121 以上
    • 关闭 firewall
      • systemctl stop firewalld.service #停止firewall
      • systemctl disable firewalld.service #禁止firewall开机启动

    Elasticsearch 5.5.0 安装

    先配置部分系统变量

    • 配置系统最大打开文件描述符数:vim /etc/sysctl.conf
    1. fs.file-max=65535
    2. vm.max_map_count=262144
    • 配置进程最大打开文件描述符:vim /etc/security/limits.conf
    1. elasticsearch soft memlock unlimited
    2. elasticsearch hard memlock unlimited
    3. * soft nofile 262144
    4. * hard nofile 262144

    开始安装

    • 官网 RPM 安装流程(重要,以下资料都是对官网的总结):https://www.elastic.co/guide/en/elasticsearch/reference/5.5/rpm.html
    • rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
    • 新建文件:vim /etc/yum.repos.d/elasticsearch.repo
    • 内容如下:
    1. [elasticsearch-5.x]
    2. name=Elasticsearch repository for 5.x packages
    3. baseurl=https://artifacts.elastic.co/packages/5.x/yum
    4. gpgcheck=1
    5. gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
    6. enabled=1
    7. autorefresh=1
    8. type=rpm-md
    • 开始安装:yum install -y elasticsearch,国内网络安装会很慢,慢慢等
    • 安装完成后,增加系统自启动:
    • /bin/systemctl daemon-reload
    • /bin/systemctl enable elasticsearch.service
    • 启动和停止软件:
    • systemctl start elasticsearch.service
    • systemctl stop elasticsearch.service

    RPM 安装后的一些配置位置说明

    • 默认系统生成了一个 elasticsearch 用户,下面的目录权限属于该用户
    • Elasticsearch 安装后位置:/usr/share/elasticsearch
    • Elasticsearch 的软件环境、堆栈的设置:/etc/sysconfig/elasticsearch
    • Elasticsearch 的集群设置:/etc/elasticsearch/elasticsearch.yml
    • Log 位置:/var/log/elasticsearch/
    • 索引数据位置:/var/lib/elasticsearch
    • 插件位置:/usr/share/elasticsearch/plugins
    • 脚本文件位置:/etc/elasticsearch/scripts

    Elasticsearch 5.2.0 安装

    • 官网下载地址:https://www.elastic.co/cn/downloads/elasticsearch
    • Elasticsearch 5.2.0 版本下载地址(32M):https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.2.0.zip

    环境

    • 机子 IP:192.168.1.127
    • CentOS 7.3
    • JDK 版本:1.8(最低要求),主推:JDK 1.8.0_121 以上
    • Elasticsearch 版本:5.2.0
    • 关闭 firewall
      • systemctl stop firewalld.service #停止firewall
      • systemctl disable firewalld.service #禁止firewall开机启动

    zip 解压安装

    • 官网总的安装文档:https://www.elastic.co/guide/en/elasticsearch/reference/5.x/zip-targz.html
    • 我的解压目录:/usr/program,解压包名:elasticsearch-5.2.0.zip
    • 解压:cd /usr/program ; unzip elasticsearch-5.2.0.zip
    • 删除掉压缩包:rm -rf elasticsearch-5.2.0.zip
    • 添加组和用户
      • 该版本不能使用 root 用户进行使用
      • useradd elasticsearch -p 123456,添加一个名为 elasticsearch 的用户,还有一个同名的组
    • 添加数据目录:mkdir -p /opt/elasticsearch/data /opt/elasticsearch/log
    • 赋权限:
      • chown -R elasticsearch:elasticsearch /usr/program/elasticsearch-5.2.0 /opt/elasticsearch
    • 编辑配置文件:vim /usr/program/elasticsearch-5.2.0/config/elasticsearch.yml,打开下面注释,并修改
    1. cluster.name: youmeek-cluster
    2. node.name: youmeek-node-1
    3. path.data: /opt/elasticsearch/data
    4. path.logs: /opt/elasticsearch/log
    5. bootstrap.memory_lock: true
    6. network.host: 0.0.0.0 # 也可以是本机 IP
    7. http.port: 9200
    8. discovery.zen.ping.unicast.hosts: ["192.168.1.127"] #如果有多个机子集群,这里就写上这些机子的 IP,格式:["192.168.1.127","192.168.1.126"]
    • 重点说明:Elasticsearch 的集群环境,主要就是上面这段配置文件内容的差别。如果有其他机子:node.name、discovery.zen.ping.unicast.hosts 需要改下。集群中所有机子的配置文件中 discovery.zen.ping.unicast.hosts 都要有所有机子的 IP 地址。
    • 修改这个配置文件,不然无法锁内存:vim /etc/security/limits.conf
    • 在文件最尾部增加下面内容:
    1. # allow user 'elasticsearch' mlockall
    2. elasticsearch soft memlock unlimited
    3. elasticsearch hard memlock unlimited
    4. * soft nofile 262144
    5. * hard nofile 262144
    • 修改:vim /etc/sysctl.conf,添加下面配置
    1. vm.max_map_count=262144
    • 重启机子:reboot
    • 切换用户:su elasticsearch
    • 控制台运行(启动比较慢):cd /usr/program/elasticsearch-5.2.0 ; ./bin/elasticsearch
    • 后台运行:cd /usr/program/elasticsearch-5.2.0 ; ./bin/elasticsearch -d -p 自定义pid值
    • 在本机终端输入该命令:curl -XGET 'http://192.168.1.127:9200',(也可以用浏览器访问:http://192.168.1.127:9200/)如果能得到如下结果,则表示启动成功:
    1. {
    2. "name" : "youmeek-node-1",
    3. "cluster_name" : "youmeek-cluster",
    4. "cluster_uuid" : "c8RxQdOHQJq-Tg8rrPi_UA",
    5. "version" : {
    6. "number" : "5.2.0",
    7. "build_hash" : "24e05b9",
    8. "build_date" : "2017-01-24T19:52:35.800Z",
    9. "build_snapshot" : false,
    10. "lucene_version" : "6.4.0"
    11. },
    12. "tagline" : "You Know, for Search"
    13. }

    安装 Kibana 5.2.0

    • 官网下载地址:https://www.elastic.co/cn/downloads/kibana
    • Kibana 5.2.0 版本下载地址(36M):https://artifacts.elastic.co/downloads/kibana/kibana-5.2.0-linux-x86_64.tar.gz
    • Kibana 5.2.0 官网文档:https://www.elastic.co/guide/en/kibana/5.2/index.html
    • Kibana 5.2.0 官网安装文档:https://www.elastic.co/guide/en/kibana/5.2/targz.html

    tar.gz 解压安装

    • 安装目录:/usr/program
    • 解压:cd /usr/program ; tar zxvf kibana-5.2.0-linux-x86_64.tar.gz
    • 删除压缩包:rm -rf kibana-5.2.0-linux-x86_64.tar.gz
    • 修改解压后的目录名称:mv kibana-5.2.0-linux-x86_64 kibana-5.2.0
    • 修改配置:vim /usr/program/kibana-5.2.0/config/kibana.yml,默认配置都是注释的,我们这里打开这些注释:
    1. server.port: 5601
    2. server.host: "0.0.0.0" # 请将这里改为 0.0.0.0 或是当前本机 IP,不然可能会访问不了
    3. erver.name: "youmeek-kibana"
    4. elasticsearch.url: "http://192.168.1.127:9200"
    5. elasticsearch.username: "elasticsearch"
    6. elasticsearch.password: "123456"
    • 运行:cd /usr/program/kibana-5.2.0 ; ./bin/kibana
    • 浏览器访问:http://192.168.1.127:5601,可以看到 Kibana Configure an index pattern 界面
    • 访问 Dev Tools 工具,后面写 DSL 语句会常使用该功能:http://192.168.1.127:5601/app/kibana#/dev_tools/console?_g=()

    Beats

    Beats 资料

    • Beats 官网:https://www.elastic.co/cn/products/beats
    • Beats 简单介绍:日志数据搜集器。一般安装在需要收集日志的服务器上,然后把收集的数据发送到 Elasticsearch 或是先发送到 logstash 清洗整理(解析过滤)后再发送到 Elasticsearch。
      • logstash 也有收集日志的功能,只是它相对 Beats 更加消耗 CPU 和内存,所以一般使用 Beats 收集日志。
    • 目前常见的 Beats 类型:
      • Filebeat(搜集文件数据);
      • Packetbeat(搜集网络流量数据);
      • Metricbeat(搜集系统、进程和文件系统级别的 CPU 和内存使用情况等数据);
      • Winlogbeat(搜集 Windows 事件日志数据)。
      • Heartbeat(主动探测服务是否可用)。

    安装 X-Pack 或是其他插件

    • X-Pack 是官网提供的管理增强工具,但是全部功能收费,有一个月使用,有部分功能免费。其他免费的插件。
      • licence 的用法可以看这篇文章:
        • http://blog.csdn.net/abcd_d_/article/details/53178798
        • http://blog.csdn.net/AbnerSunYH/article/details/53436212
        • 破解:http://www.lofter.com/lpost/33be15_d4fd028
      • 免费插件:
      • head - 节点数据查看管理:https://github.com/mobz/elasticsearch-head
      • kopf - 集群管理:https://github.com/lmenezes/elasticsearch-kopf
    • 官网说明:https://www.elastic.co/guide/en/x-pack/5.2/installing-xpack.html
    • 安装(过程比较慢):/usr/share/elasticsearch/bin/elasticsearch-plugin install x-pack
    • 如果线上安装速度太慢,那就离线安装:
      • 下载,我放在 /opt 目录下(119M):wget https://artifacts.elastic.co/downloads/packs/x-pack/x-pack-5.2.2.zip
      • 安装:/usr/share/elasticsearch/bin/elasticsearch-plugin install file:///opt/x-pack-5.2.2.zip
    • 卸载:/usr/share/elasticsearch/bin/elasticsearch-plugin remove x-pack
    • 安装后重启服务,重启后访问你会发现需要用户和密码,我们可以关掉这个,在 elasticsearch.yml 中添加:xpack.security.enabled: false
    • 其他 5.2 资料:
      • https://blog.yourtion.com/install-x-pack-for-elasticsearch-and-kibana.html
      • https://www.ko178.cn/?p=353
      • https://my.oschina.net/HeAlvin/blog/828639
      • http://www.jianshu.com/p/004765d2238b
      • http://www.cnblogs.com/delgyd/p/elk.html
      • http://www.itdadao.com/articles/c15a1135185p0.html
      • http://www.busyboy.cn/?p=920
      • http://nosmoking.blog.51cto.com/3263888/1897989
      • http://www.freebuf.com/sectool/139687.html

    2.4.X

    安装 elasticsearch 集群

    下载

    • 下载在我个人习惯的子自己创建的目录下:/usr/program/elk
    • elasticsearch 2.4.1(26 M):wget https://download.elastic.co/elasticsearch/elasticsearch/elasticsearch-2.4.1.tar.gz
    • logstash 2.4.0(80 M):wget https://download.elastic.co/logstash/logstash/logstash-2.4.1.tar.gz
    • kibana 4.6.1(32 M):wget https://download.elastic.co/kibana/kibana/kibana-4.6.1-linux-x86_64.tar.gz

    tar 解压安装

    • 确保系统安装有 JDK
    • 官网文档:https://www.elastic.co/guide/en/elasticsearch/reference/5.2/zip-targz.html
    • 添加日志存放目录、数据存放目录:mkdir -p /opt/elasticsearch/data /opt/elasticsearch/log
    • 添加组和用户
      • 该版本不能使用 root 用户进行使用
      • useradd elasticsearch -p 123456,添加一个名为 elasticsearch 的用户,还有一个同名的组
    • 解压下载的文件
      • cd /usr/program/elk
      • tar zxvf elasticsearch-2.4.1.tar.gz
    • 赋权限:
      • chown -R elasticsearch:elasticsearch /usr/program/elk /opt/elasticsearch
    • 我 tar 安装后一些路径说明:
      • home:/usr/program/elk/elasticsearch-2.4.1
      • bin:/usr/program/elk/elasticsearch-2.4.1/bin
      • 配置文件:/usr/program/elk/elasticsearch-2.4.1/config/elasticsearch.yml
      • plugins:/usr/program/elk/elasticsearch-2.4.1/plugins
      • script:/usr/program/elk/elasticsearch-2.4.1/scripts
      • data:/opt/elasticsearch/data
      • log:/opt/elasticsearch/log/集群名称.log
    • 编辑配置文件:vim /usr/program/elk/elasticsearch-2.4.1/config/elasticsearch.yml,打开下面注释,并修改
    1. cluster.name: gitnavi-cluster
    2. node.name: gitnavi-node-1
    3. path.data: /opt/elasticsearch/data
    4. path.logs: /opt/elasticsearch/log
    5. bootstrap.memory_lock: true
    6. network.host: 0.0.0.0 # 也可以是本机 IP
    7. http.port: 9200
    8. discovery.zen.ping.multicast.enabled: false
    9. discovery.zen.ping.unicast.hosts: ["192.168.1.127", "192.168.1.126"] #这个为两台机子的 IP 地址
    • 修改这个配置文件,不然无法锁内存:vim /etc/security/limits.conf
    • 在文件最尾部增加下面内容:
    1. # allow user 'elasticsearch' mlockall
    2. elasticsearch soft memlock unlimited
    3. elasticsearch hard memlock unlimited
    4. * soft nofile 262144
    5. * hard nofile 262144
    • 关闭 firewall

      • systemctl stop firewalld.service #停止firewall
      • systemctl disable firewalld.service #禁止firewall开机启动
    • 切换到 elasticsearch 用户下:su elasticsearch

    • 带控制台的启动(比较慢):/usr/program/elk/elasticsearch-2.4.1/bin/elasticsearch
      • 控制台会输出类似这样的信息:
    1. [2017-03-13 18:42:51,170][INFO ][node ] [gitnavi-node-1] version[2.4.1], pid[21156], build[c67dc32/2016-09-27T18:57:55Z]
    2. [2017-03-13 18:42:51,177][INFO ][node ] [gitnavi-node-1] initializing ...
    3. [2017-03-13 18:42:51,821][INFO ][plugins ] [gitnavi-node-1] modules [reindex, lang-expression, lang-groovy], plugins [head, kopf], sites [head, kopf]
    4. [2017-03-13 18:42:51,852][INFO ][env ] [gitnavi-node-1] using [1] data paths, mounts [[/ (rootfs)]], net usable_space [12.4gb], net total_space [17.4gb], spins? [unknown], types [rootfs]
    5. [2017-03-13 18:42:51,852][INFO ][env ] [gitnavi-node-1] heap size [1015.6mb], compressed ordinary object pointers [true]
    6. [2017-03-13 18:42:54,094][INFO ][node ] [gitnavi-node-1] initialized
    7. [2017-03-13 18:42:54,094][INFO ][node ] [gitnavi-node-1] starting ...
    8. [2017-03-13 18:42:54,175][INFO ][transport ] [gitnavi-node-1] publish_address {192.168.1.127:9300}, bound_addresses {[::]:9300}
    9. [2017-03-13 18:42:54,178][INFO ][discovery ] [gitnavi-node-1] gitnavi-cluster/-XywT60EScO-9lgzjfnsgg
    10. [2017-03-13 18:42:57,344][INFO ][cluster.service ] [gitnavi-node-1] new_master {gitnavi-node-1}{-XywT60EScO-9lgzjfnsgg}{192.168.1.127}{192.168.1.127:9300}, reason: zen-disco-join(elected_as_master, [0] joins received)
    11. [2017-03-13 18:42:57,410][INFO ][gateway ] [gitnavi-node-1] recovered [0] indices into cluster_state
    12. [2017-03-13 18:42:57,414][INFO ][http ] [gitnavi-node-1] publish_address {192.168.1.127:9200}, bound_addresses {[::]:9200}
    13. [2017-03-13 18:42:57,414][INFO ][node ] [gitnavi-node-1] started
    • 守护进程方式启动:/usr/program/elk/elasticsearch-2.4.1/bin/elasticsearch -d
    • 守护进程方式停止:ps -ef|grep elasticsearc,只能通过 kill pid 来结束
    • 访问:http://192.168.1.127:9200/,可以看到如下内容:
    1. {
    2. "name" : "gitnavi-node-1",
    3. "cluster_name" : "gitnavi-cluster",
    4. "cluster_uuid" : "0b66dYpnTd-hh7x4Phfm1A",
    5. "version" : {
    6. "number" : "2.4.1",
    7. "build_hash" : "c67dc32e24162035d18d6fe1e952c4cbcbe79d16",
    8. "build_timestamp" : "2016-09-27T18:57:55Z",
    9. "build_snapshot" : false,
    10. "lucene_version" : "5.5.2"
    11. },
    12. "tagline" : "You Know, for Search"
    13. }
    • 插件(插件的迭代很容易跟不上官网的版本,所以请牢记关注插件官网的说明)
      • head,节点数据查看管理:https://github.com/mobz/elasticsearch-head
      • kopf,集群管理:https://github.com/lmenezes/elasticsearch-kopf
      • Bigdesk,监控查看CPU内存索引数据搜索情况http连接数:https://github.com/hlstudio/bigdesk
    • 安装(过程比较慢)
      • head:/usr/program/elk/elasticsearch-2.4.1/bin/plugin install mobz/elasticsearch-head
        • 安装完的访问地址:http://192.168.1.127:9200/_plugin/head
      • kopf:/usr/program/elk/elasticsearch-2.4.1/bin/plugin install lmenezes/elasticsearch-kopf
        • 安装完的访问地址:http://192.168.1.127:9200/_plugin/kopf
      • Bigdesk:/usr/program/elk/elasticsearch-2.4.1/bin/plugin install hlstudio/bigdesk
        • 安装完的访问地址:http://192.168.1.127:9200/_plugin/bigdesk
      • 卸载:/usr/share/elasticsearch/bin/elasticsearch-plugin remove 插件名称
    • IK 分词插件的安装(重点:所有节点都需要安装此插件
      • IK 分词官网:https://github.com/medcl/elasticsearch-analysis-ik
      • 官网首页已经有一个表格说明 ES 版本和 IK 插件的版本对应,我们可以看到:ES 2.4.1 对应 IK 分词 1.10.1,下载地址:https://github.com/medcl/elasticsearch-analysis-ik/releases/tag/v1.10.1
      • 进入 ES 插件目录:cd /usr/program/elk/elasticsearch-2.4.1/plugins
      • 创建 ik 目录:mkdir ik
      • 把下载的 elasticsearch-analysis-ik-1.10.1.zip 上传到刚新建的 ik 目录下
      • 解压:unzip elasticsearch-analysis-ik-1.10.1.zip
      • 删除压缩包:rm -rf elasticsearch-analysis-ik-1.10.1.zip
      • 编辑 ES 配置文件:vim /usr/program/elk/elasticsearch-2.4.1/config/elasticsearch.yml
        • 在文件底部添加如下内容:
    1. index.analysis.analyzer.default.tokenizer : "ik_max_word"
    2. index.analysis.analyzer.default.type: "ik"
    • 重启 ES : /usr/program/elk/elasticsearch-2.4.1/bin/elasticsearch
    • 验证 ik 插件,浏览器访问:http://192.168.1.127:9200/_analyze?analyzer=ik&pretty=true&text=这是一个针对程序员优化的导航GitNavi.com,能得到如下结果就表示成功:
    1. [
    2. {
    3. "token": "这是",
    4. "start_offset": 0,
    5. "end_offset": 2,
    6. "type": "CN_WORD",
    7. "position": 0
    8. },
    9. {
    10. "token": "一个",
    11. "start_offset": 2,
    12. "end_offset": 4,
    13. "type": "CN_WORD",
    14. "position": 1
    15. },
    16. {
    17. "token": "一",
    18. "start_offset": 2,
    19. "end_offset": 3,
    20. "type": "TYPE_CNUM",
    21. "position": 2
    22. },
    23. {
    24. "token": "个",
    25. "start_offset": 3,
    26. "end_offset": 4,
    27. "type": "COUNT",
    28. "position": 3
    29. },
    30. {
    31. "token": "针对",
    32. "start_offset": 4,
    33. "end_offset": 6,
    34. "type": "CN_WORD",
    35. "position": 4
    36. },
    37. {
    38. "token": "程序员",
    39. "start_offset": 6,
    40. "end_offset": 9,
    41. "type": "CN_WORD",
    42. "position": 5
    43. },
    44. {
    45. "token": "程序",
    46. "start_offset": 6,
    47. "end_offset": 8,
    48. "type": "CN_WORD",
    49. "position": 6
    50. },
    51. {
    52. "token": "序",
    53. "start_offset": 7,
    54. "end_offset": 8,
    55. "type": "CN_WORD",
    56. "position": 7
    57. },
    58. {
    59. "token": "员",
    60. "start_offset": 8,
    61. "end_offset": 9,
    62. "type": "CN_CHAR",
    63. "position": 8
    64. },
    65. {
    66. "token": "优化",
    67. "start_offset": 9,
    68. "end_offset": 11,
    69. "type": "CN_WORD",
    70. "position": 9
    71. },
    72. {
    73. "token": "导航",
    74. "start_offset": 12,
    75. "end_offset": 14,
    76. "type": "CN_WORD",
    77. "position": 10
    78. },
    79. {
    80. "token": "航",
    81. "start_offset": 13,
    82. "end_offset": 14,
    83. "type": "CN_WORD",
    84. "position": 11
    85. },
    86. {
    87. "token": "gitnavi.com",
    88. "start_offset": 14,
    89. "end_offset": 25,
    90. "type": "LETTER",
    91. "position": 12
    92. },
    93. {
    94. "token": "gitnavi",
    95. "start_offset": 14,
    96. "end_offset": 21,
    97. "type": "ENGLISH",
    98. "position": 13
    99. },
    100. {
    101. "token": "com",
    102. "start_offset": 22,
    103. "end_offset": 25,
    104. "type": "ENGLISH",
    105. "position": 14
    106. }
    107. ]
    • Elasticsearch 5.x 版本之后,就不需要再修改这个配置文件了 /usr/program/elk/elasticsearch-2.4.1/config/elasticsearch.yml,直接解压 zip 后,直接可以启动使用。可以访问这个进行测试:http://192.168.1.127:9200/_analyze?analyzer=ik_max_word&pretty=true&text=这是一个针对程序员优化的导航GitNavi.com
    • 其他一些配置文件:
      • main.dic,内置中文词库文件是,差不多有 27W 条记录。
      • stopword.dic,英文停用词,一般不会被分词,不会存放在倒排索引中。
      • quantifier.dic,用来存放一些量词。
      • suffix.dic,用来存放后缀词。
      • surname.dic,姓氏。
    • 自定义分词词库:
      • 修改配置文件:IKAnalyzer.cfg.xml
      • 在 ext_dict 标签中指定我们自己新增的 dic 文件(给的 demo 路径是 custom 目录下)。
      • 修改完重启下 Elasticsearch 集群
    • 自定义停用词库:
      • 修改配置文件:IKAnalyzer.cfg.xml
      • 在 ext_stopwords 标签中指定我们自己新增的 dic 文件(给的 demo 路径是 custom 目录下)。
      • 修改完重启下 Elasticsearch 集群

    构建 elasticsearch 集群

    • 另外一台机子也同样这样安装,但是有几个地方有差别:
      • 特别注意:集群的关键点是配置文件中的:cluster.name,这个一样就表示在一个集群中
      • 配置文件:/usr/program/elk/elasticsearch-2.4.1/config/elasticsearch.yml
        • node 名称改为不一样的,比如我这边改为 2:node.name: gitnavi-node-2
      • 插件不用安装,有一台机子安装即可
      • 先启动装有 head 的机子,然后再启动另外一台,这样好辨别

    资料

    • <>
    • <>