赞
踩
一、前言
进行SpringBoot整合Spring Data ES的时候遇到了一些坑,基本都是版本控制导致,同样在搭建ES Linux环境的时候也遇到了一些坑,还是总结一下,避免新人遇到跟我一样的情况
二、ES 在Linux下的环境搭建
因为搭建其实是比较基础,且简单的,我这边只会指出容易出错的地方,避免大家遇到类似问题
https://www.elastic.co/cn/downloads/past-releases#elasticsearch
将对应的包放在Linux终端下并解压,es目录我改了名字,初学者不要疑惑
由于ES在Linux下的限制,需要作如下配置,否则会启动失败
修改/etc/security/limits.conf 文件
* soft nofile 65536
* hard nofile 131072
* soft nproc 2048
* hard nproc 4096
vm.max_map_count=262145
######elasticsearch.yml########
node.name: node-1 #配置当前es节点名称(默认是被注释的,并且默认有一个节点名)
cluster.name: my-application #默认是被注释的,并且默认有一个集群名
path.data: /home/es/data # 数据目录位置
path.logs: /home/es/logs # 日志目录位置
network.host: 0.0.0.0 #绑定的ip:默认只允许本机访问,修改为0.0.0.0后则可以远程访问cluster.initial_master_nodes: ["node-1", "node-2"] #默认是被注释的 设置master节点列表 用逗号分隔
######jvm.options#######
-Xms256m -Xmx256m #修改为自定义的的内存大小
adduser es
chown -R es:es + es目录及配置文件制定的data、logs目录同样赋予权限否则会报错
su es
./es/elasticsearch/bin/elasticsearch #启动脚本
防火墙必须关闭,否则无法请求成功
四、ES基础概念及基础语法使用
https://www.elastic.co/guide/cn/elasticsearch/guide/current/_document_oriented.html
index,索引就类似于MySQL中的数据库的概念
type,类型就类似于MySQL中的表的概念
document,文档就类似于MySQL中的每行记录
filed,字段就类似于MySQL中的column字段属性
基础语法使用
由于ES支持RestFull API形式并结合DSL语言特性进行请求来对数据进行CRUD操作
//根据gameId、uid匹配查询 http://192.168.55.37:9200/索引/类型/_search { "query": { "bool": { "must": [ { "match": { "uid": 90001388 } }, { "match": { "gameId": "ioszhengbanziyunying" } } ] } } }
//【term可用match代替】
http://192.168.55.37:9200/索引/类型/_search
{
"query": {
"term": {
"uid": 90001388
}
}
}
http://192.168.55.37:9200/索引/类型/_search
{
"query": {
"range": {
"utime": {
"gte": 1527860849,
"lte": 1533131249
}
}
}
}
// 最大/最小值查询可将sum改成max/min即可 http://192.168.55.37:9200/索引/类型/_search { "query": { "term": { "uid": 90001352 } }, "size": 0, "aggs": { "payPrice_of_sum": { "sum": { "field": "payPrice" } } } }
curl -XDELETE 'http://192.168.55.37:9200/索引/类型/_query?pretty' -d '{ "query": { "bool": { "must": [ { "term": { "uid": "90001794" } }, { "term": { "gameId": "1483086858573" } } ] } } }'
GET /track_log-2020-*/_search { "query": { "bool": { "must": [ { "term": { "app_id.keyword": { "value": "34234234234234" } } } ], "filter": { "script": { "script": { "source": "doc['server_time'].value.millis-doc['client_time'].value.millis>60000", "lang":"painless" } } } } } }
四、后端SpringBoot整合Spring Data ES
<!-- springboot选用的是2.0.8.RELEASE,同样spring data ES也是2.0.8.RELEASE --> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.0.8.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-elasticsearch</artifactId> </dependency>
server:
port: 8011
spring:
data:
elasticsearch:
cluster-nodes: 192.168.245.128:9300
cluster-name: my-application
repositories:
enabled: true
@Data
@Document(indexName = "test",type = "test_table") //定义索引、类型
public class TrackerLog {
@Id
private Long id;
private Date clientTime;
private Date serverTime;
private String content;
}
// ElasticsearchRepository传实体类对象,主键类型
public interface BaseElasticsearchRepository extends ElasticsearchRepository<TrackerLog,Long> {
//自定义查询方法
List<TrackerLog> findByContent(String content);
}
这边就简单写,正常要controller - > servcie -> dao
@RestController public class EsController { @Autowired private BaseElasticsearchRepository baseEs; //创建索引、类型 @GetMapping("/index") public String initEs(){ TrackerLog trackerLog = new TrackerLog(); baseEs.save(trackerLog); return "true"; } //往ES写入数据 @GetMapping("/create/{id}") public String putEsData(@PathVariable("id") Long id){ TrackerLog trackerLog = new TrackerLog(); trackerLog.setId(id); trackerLog.setClientTime(new Date()); trackerLog.setServerTime(new Date()); trackerLog.setContent("测试"); baseEs.save(trackerLog); return "true"; } //查询ES数据 @GetMapping("/get/{id}") public TrackerLog getEsData(@PathVariable("id")Long id){ Optional<TrackerLog> datas = baseEs.findById(id); return datas.get(); } }
五、ES与springdataES版本控制
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。