ElasticSearch 简介
ElasticSearch是一个高度可扩展的开源搜索引擎并使用REST API,所以您值得拥有。 在本教程中,将介绍开始使用ElasticSearch的一些主要概念。
下载并运行ElasticSearch
ElasticSearch可以从elasticsearch.org下载对应的文件格式,如ZIP和TAR.GZ。下载并提取一个运行它的软件包之后不会容易得多,需要提前安装Java运行时环境。
下载链接 https://www.elastic.co/products/elasticsearch
在Windows上运行ElasticSearch
- 从命令窗口运行位于bin文件夹中的elasticsearch.bat。这将会启动ElasticSearch在控制台的前台运行,这意味着我们可在控制台中看到运行信息或一些错误信息,并可以使用CTRL + C停止或关闭它。
- 在启动过程中,ElasticSearch的实例运行会占用大量的内存,所以在这一过程中,电脑会变得比较慢,需要耐心等待,启动加载完成后电脑就可以正常使用了
- 当ElasticSearch的实例并运行,您可以使用http://localhost:9200检查是否运行成功
Linux安装ElasticSearch
访问elasticSearch官网地址 https://www.elastic.co/
下载指定版本的安装包:elasticsearch-6.1.1.tar.gz,上传至指定目录/usr/local/elasticsearch
1 | #解压 |
修改host 文件,执行命令 vi /etc/hosts
因为安全问题elasticsearch 不让用root用户直接运行,所以要创建新用户。
1 | useradd es |
在es用户下启动时报错
1 | 原因:Centos6不支持SecComp,而ES默认bootstrap.system_call_filter为true进行检测,所以导致检测失败,失败后直接导致ES不能启动 |
第一个问题的原因:
1 | 原因:无法创建本地文件问题,用户最大可创建文件数太小 |
第二个错误的原因:
1 | 原因:无法创建本地线程问题,用户最大可创建线程数太小 |
第三个错误的原因:
1 | 原因:最大虚拟内存太小 |
切换到es用户执行:bin/elasticsearch
访问:http://192.168.1.191:9200/
1 | #后台启动 |
elasticsearch 服务安全配置
一、目前主要通过插件的形式来控制:
常用的插件主要包括:elasticsearch-http-basic,search-guard,shield
由于shield是收费的暂时还未研究(研究后统一补充)
search-guard主要用于elasticsearch2.x以后的版本(研究后统一补充)
elasticsearch-http-basic主要用于elasticsearch1.x的版本
基于目前我们es集群大部分都是1.5.2版本的,所以主要使用http-basic来控制来自http请求的访问。
二、elasticsearch-http-basic安装:
下载elasticsearch-http-basic-1.5.1.jar(下载地址:https://github.com/Asquera/elasticsearch-http-basic/releases)
在ES的plugins文件夹下新建http-basic文件夹
把下载的 elasticsearch-http-basic-1.5.1.jar拷贝到新建的http-basic文件夹下
修改ES的配置文件elasticsearch.yml,在文件末尾添加以下配置:
1 | 配置名 默认值 说明 |
java中使用elastaicsearch(RestHighLevelClient)
官方文档可以得知,现在存在至少三种Java客户端。
- Transport Client
- Java High Level REST Client
- Java Low Level Rest Client
- 强烈建议ES5及其以后的版本使用Java High Level REST Client
java High Level REST Client 介绍
- Java High Level REST Client 是基于Java Low Level REST Client的,每个方法都可以是同步或者异步的。同步方法返回响应对象,而异步方法名以“async”结尾,并需要传入一个监听参数,来确保提醒是否有错误发生。
- Java High Level REST Client需要Java1.8版本和ES。并且ES的版本要和客户端版本一致。和TransportClient接收的参数和返回值是一样的。
引入maven依赖
1 | <dependency> |
Java基础操作
1 | public class RestClientTest { |
Kibana linux下安装
解压:tar zxvf kibana-6.4.0-linux-x64.tar.gz
配置
https://www.elastic.co/guide/cn/kibana/current/settings.html1
2
3server.port: 5601
server.host: "192.168.1.191"
elasticsearch.url: "http://192.168.1.191:9200"
启动
1 | ./kibana //不能关闭终端 |
FileBeats 与 LogStash 的安装
- LogStash 可以用来对日志进行收集并进行过滤整理后输出到 ES 中,FileBeats 是一个更加轻量级的日志收集工具。
- 现在最常用的方式是通过 FileBeats 收集目标日志,然后统一输出到 LogStash 做进一步的过滤,在由 LogStash 输出到 ES 中进行存储。
官方提供了压缩包下载, https://www.elastic.co/downloads/logstash 。 下载完成后解压即可。
1 | tar zxvf logstash-6.2.2.tar.gz |
LogStash 的运行需要指定一个配置文件,来指定数据的流向,我们在当前目录下创建一个 first.conf 文件,其内容如下:
1 | ### 配置输入为 beats |
上面配置了 LogStash 输出日志到 ES 中 配置完成后就可以通过如下方式启动 LogStash 了
1 | bin/logstash -f first.conf --config.reload.automatic |
安装运行 FileBeats
FileBeats 也提供了下载包,地址为 https://www.elastic.co/downloads/beats/filebeat 。找到系统对应的包下载后解压即可。
1 | tar zxvf filebeat-6.2.2-darwin-x86_64.tar.gz |
进入目录编辑 filebeat.yml 找到对应的配置项,配置如下
1 | - type: log |
配置完成后执行如下命令,启动 FileBeat 即可
1 | # FileBeat 需要以 root 身份启动,因此先更改配置文件的权限 |