# 下载地址:
链接:https://pan.baidu.com/s/1Rr-v047Kg5y563v1njV-0g
提取码:zcna
我这里用的是都是7.5的window版本
如果需要其它版本下面是官网下载地址
https://www.elastic.co/cn/downloads/elasticsearch
# elasticSearch安装配置:
解压后打开config文件下的elasticsearch.yml
将注释的cluster.name: my-application放开
也可以自己起一个名字,打开bin文件夹点击elasticsearch.bat启动
打开http://localhost:9200出现这个界面说吗我们启动成功了,之后我们再进行kibanna,logstash配置
# kibanna安装配置:
kibanna是为了方便我们操作elasticSearch的一个网站,同样在config文件下打开kibana.yml配置文件,在配置文件最后面加入
i18n.locale: "zh-CN" 是将网站设置成中文,不设置的话默认是英文
elasticsearch.hosts: "http://localhost:9200" 这里的http://localhost:9200就是我们上面es的地址
然后点击bin/kibana.bat启动,启动可能会需要点时间,启动完成后打开http://localhost:5601,出现这个界面说明成功了
进入后点击左侧小扳手图标,这也是我们最常用的
可以尝试下在控制台对es进行操作,例如 输入GET _all 点击运行查看
# logstash配置:
logstash是用来进行同步数据到es的,我这里将自己的mysql的gm_activity表数据同步到es,启动logstash后es将创建一个gm_activity索引存储数据
需要一个mysql驱动 mysql-connector-java-5.1.47.jar
我这里是暂时是放在这个位置
然后进入bin文件夹,创建一个mysql.conf文件,下面是我的mysql.conf文件的配置的内容
input {
stdin {
}
jdbc {
# mysql数据库连接
jdbc_connection_string => "jdbc:mysql://127.0.0.1:3306/plus?useUnicode=true&characterEncoding=utf8&serverTimezone=UTC"
# mysqly用户名和密码
jdbc_user => "root"
jdbc_password => "root"
# 驱动配置
jdbc_driver_library => "E:\elasticSearch\logstash-7.5.2\mysql-connector-java-5.1.47.jar"
# 驱动类名
jdbc_driver_class => "com.mysql.jdbc.Driver"
jdbc_paging_enabled => "true"
jdbc_page_size => "50000"
# 执行指定的sql文件
#statement_filepath => "D:\service\logstash-7.7.0\mysql\sql\fa_search.sql"
#执行的sql语句
statement => "SELECT * FROM gm_activity"
# 设置监听 各字段含义 分 时 天 月 年 ,默认全部为*代表含义:每分钟都更新
schedule => "* * * * *"
# 索引类型
#type => "blog"
}
}
output {
elasticsearch {
#es服务器
hosts => ["localhost:9200"]
#ES索引名称
index => "gm_activity"
#自增ID
document_id => "%{id}"
}
stdout {
codec => json_lines
}
}
根据自己的情况去更改相应内容。
然后在bin目录下运行命令.\logstash.bat -f mysql.conf 启动成功后可以在kibanna查看数据
# elasticSearch整合springboot:
要注意 我这里用的springboot版本是2.2.0 ,springboot版本不能太低,太低的话会出现一些问题,而且有些问题在启动的时候不会报错,在调用时报错 !
pom文件引入
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-elasticsearch</artifactId>
</dependency>
创建一个类,对应es里索引名为 gm_activity 的数据的字段
package com.platform.modules.napoleon.model.es;
import lombok.Data;
import org.springframework.data.annotation.Id;
import org.springframework.data.elasticsearch.annotations.Document;
import org.springframework.data.elasticsearch.annotations.Field;
import org.springframework.data.elasticsearch.annotations.FieldType;
import java.io.Serializable;
@Data
@Document(indexName = "gm_activity",type = "_doc",useServerConfiguration = true,createIndex = false)
public class EsSpecificActivity implements Serializable {
@Id
private int id;
@Field(type = FieldType.Text,analyzer = "language")
private String name;
@Field(type = FieldType.Text,analyzer = "language")
private String icon;
@Field(type = FieldType.Text,analyzer = "language")
private String banner;
@Field(type = FieldType.Text,analyzer = "language")
private String visibleConditions;
@Field(type = FieldType.Text,analyzer = "language")
private String joinConditions;
@Field(type = FieldType.Text,analyzer = "language")
private String type;
@Field(type = FieldType.Long,analyzer = "language")
private int openType;
@Field(type = FieldType.Text,analyzer = "language")
private String openTime;
@Field(type = FieldType.Text,analyzer = "language")
private String duration;
@Field(type = FieldType.Text,analyzer = "language")
private String loopDelayTime;
@Field(type = FieldType.Text,analyzer = "language")
private String closeDelayTime;
@Field(type = FieldType.Long,analyzer = "language")
private int status;
@Field(type = FieldType.Long,analyzer = "language")
private int statistics;
}
@Document 注解里 useServerConfiguration表示是否启动服务器端配置 createIndex如果为true的话es里没有gm_activity索引的话将会为es创建
@id 表示主键
@Field 里 type根据属性类型去设置,analyzer分词器如果没配置默认是standard
之后创建一个repository
public interface EsSpecificActivityRepository extends ElasticsearchRepository<EsSpecificActivity,Integer> {
}
然后我们就调用repository对es数据进行操作了
@Autowired EsSpecificActivityRepository esSpecificActivityRepository;
可以见到esSpecificActivityRepository有很多对数据进行操作的api,如果有比较复杂的操作可以使用search方法,这里我写了个例子做个参考,查询id 30到89的数据并进行排序,具体就不详细讲了
SortBuilder sortBuilder = SortBuilders.fieldSort("id").order(SortOrder.ASC);
BoolQueryBuilder queryBuilder=QueryBuilders.boolQuery();
RangeQueryBuilder query = QueryBuilders.rangeQuery("id").from("30").to("89");
queryBuilder.must(query);
NativeSearchQueryBuilder builder = new NativeSearchQueryBuilder().withQuery(queryBuilder)
.withSort(sortBuilder);
SearchQuery searchQuery = builder.build();
Iterable<EsSpecificActivity> list = esSpecificActivityRepository.search(searchQuery);