安装ELK套件之前请先安装jdk1.8,本文只做安装步骤介绍,至于其它详细参数请另外查询资料。
elasticsearch5.3.0
1.下载elasticsearch-5.3.0 最新包。解压 进入bin文件夹,启动elasticsearch.bat 服务浏览器上输入http://localhost:9200/,出现elasticsearch相关信息 表示启动成功。
2.安装x-pack插件,在5.0之前的版本需要安装很多插件进行查看,5.0版本之后只需要安装x-pack插件就行。X-Pack是一个Elastic Stack的扩展,将安全,警报,监视,报告和图形功能包含在一个易于安装的软件包中。在Elasticsearch 5.0.0之前,您必须安装单独的Shield,Watcher和Marvel插件才能获得在X-Pack中所有的功能。如果elasticsearch用的是集群环境,则每个elasticsearch节点下面都必须安装x-pack插件。进入bin文件夹下面,运行安装脚本bin/elasticsearch-plugin install x-pack。步骤如下面显示,则安装成功.
x-pack插件默认开了安全验证功能,如果不关闭,官网上demo运行会报找不到这个节点。解决办法打开elasticsearch-5.3.0\config\elasticsearch.yml将安全验证进行关掉xpack.security.enabled: false,另外的几个参数可以进行设置action.auto_create_index: true(自动创建引),cluster.name:myCluster(设置集群名称),node.name: node-1(开启节点名称)。(x-pack安全验证问题可以查看资料
http://www.th7.cn/Program/java/201704/1142297.shtml
和官网资料
https://www.elastic.co/guide/en/x-pack/current/java-clients.html
)
如果想配置集群,需要额外配置集群参数
bootstrap.memory_lock: false
bootstrap.system_call_filter: false
node.master: true
node.data: true
http.enabled: true
http.cors.enabled: true
http.cors.allow-origin: "*"
network.host: ip ##最好填写本机ip
discovery.zen.ping.unicast.hosts: ["ip"] ## 填写集群其他ip地址,不需要写端口号
kibana5.3.0
1.去官网下载kibana5.3.0版本进行解压。同样也需要安装x-pack插件。
在线安装:bin/kibana-plugin install x-
pack。因为我本机安装非常的慢,所以我用离线安装的方法,在
https://artifacts.elastic.co/downloads/kibana-plugins/x-pack/x-pack-5.3.0.zip下载了安装包,
然后进行离线安装
kibana-plugin install file:///D:/kibana-5.3.0/x-pack-5.3.0.zip
安装成功后可访问http://localhost:5601 会有控制台进行展现。
logstash-5.3.0
1.去官网下载logstash-5.3.0安装包,进入bin/logstash.bat就可以正常启动。如果你想同步mysql数据库的表数据则需要安装logstash-input-jdbc插件,能够实现表数据自动同步功能。 logstash-plugin install logstash-input-jdbc 结果安装发现实在是太慢了。还提示报错信息,如下所示
解决办法如下:
1.让windows支持gem语法,去该网址上下载http://rubyinstaller.org/downloads/安装包Ruby 2.3.3 (x64)
安装成功后在cmd里面可以用gem -v查看gem是否安装成功,如果安装过程中出现SSL证书问题,请参考
http://blog.csdn.net/ysk575664647/article/details/52965737进行解决,亲测可用,安装完成后我配置了环境变量
剩下的安装步骤我是参考http://www.cnblogs.com/phpshen/p/6098333.html进行余下安装并且完成logstash测试
安装完成后,用java测试了下es一个demo.步骤如下,新建一个名称为elastic maven的项目
pom.xml
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.elasticsearch.client</groupId>
<artifactId>transport</artifactId>
<version>5.3.0</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
<version>2.7</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.7</version>
</dependency>
java
@SuppressWarnings("resource")
public class TestEsClient {
public static Client client;
static{
try {
//设置集群名称
Settings settings = Settings.builder().put("cluster.name", "myCluster").put("client.transport.sniff", true).build();
client = new PreBuiltTransportClient(settings).addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("localhost"), 9300));
} catch (UnknownHostException e) {
e.printStackTrace();
}
}
//创建一个index
public static void createIndex() throws IOException{
XContentBuilder contentBuilder = XContentFactory.jsonBuilder();
contentBuilder.startObject()
.field("user", "kimchy")
.field("postDate", new Date())
.field("message", "trying out Elasticsearch").endObject();
IndexRequestBuilder index = client.prepareIndex("twitter", "tweet", "1");
IndexResponse res = index.setSource(contentBuilder).get();
System.out.println("index:"+res.getIndex());
System.out.println("type:"+res.getType());
System.out.println("id:"+res.getId());
System.out.println("result:"+res.getResult().toString());
//关闭client
client.close();
}
// 删除索引
public static void deleteIndex(){
DeleteResponse response = client.prepareDelete("twitter", "tweet", "1").get();
System.out.println(response.status());
}
// 更新索引
public static void updateIndex() throws IOException, InterruptedException, ExecutionException{
XContentBuilder contentBuilder = XContentFactory.jsonBuilder();
UpdateRequest updateRequest = new UpdateRequest();
updateRequest.index("twitter");
updateRequest.type("tweet");
updateRequest.id("1");
updateRequest.doc(contentBuilder.startObject().field("gender", "male").endObject());
UpdateResponse res = client.update(updateRequest).get();
System.out.println(res.getResult());
}
public static void print(){
//搜索数据
SearchResponse response = client.prepareSearch("blog").execute().actionGet();
SearchHits hits = response.getHits();
if(hits!=null){
for(SearchHit hit:hits.getHits()){
System.out.println(hit.getSourceAsString());
}
}
}
public static void main(String[] args) throws IOException, InterruptedException, ExecutionException {
createIndex();
}
}