SpringBoot集成ElasticSearch及ElasticsearchRepository

怎么搭建Elasticsearch服务就不多说了,可参考:

Elasticsearch5.2.1集群搭建 https://blog.csdn.net/Gamer_gyt/article/details/59077189

 

1.添加配置及依赖

spring: 
    data:
       elasticsearch: 
            cluster-name: es 
            cluster-nodes: 192.168.120.103:9300,192.168.120.104:9300
dependencies {
   compile 'org.springframework.boot:spring-boot-starter-data-elasticsearch:1.5.8.RELEASE'
}

2.实体类,定义索引、类型、字段

package com.demo.pojo;

import java.io.Serializable;
import org.springframework.data.annotation.Id;
import org.springframework.data.elasticsearch.annotations.Document;


@Document(indexName = "apilog_index", type = "apilog")
public class ApiLog implements Serializable {
	private static final long serialVersionUID = -382318121710813866L;
	@Id
	private long id;

	private int uid;
	private int app_id;
	private String url;
	private long c_time;

}

3.Service层定义增删查方法

package com.demo.service;

import java.util.ArrayList;
import org.elasticsearch.index.query.QueryBuilder;
import org.elasticsearch.index.query.QueryBuilders;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;

import com.demo.ApiLog;

@Service
public class ApiLogService {

	@Autowired
	private ApiLogSearchRepository repository;

    /**
     * 删除文档
     * @param id
     * @return
     */
	public boolean deleteApiLog(long id) {
		try {
			repository.delete(id);
		} catch (Exception ex) {
			ex.printStackTrace();
			return false;
		}
		return true;
	}

    /**
     * 插入文档
     * @param aLog
     * @return
     */
	public ApiLog saveApiLog(ApiLog aLog) {
		ApiLog apiLog = new ApiLog();
		try {
			apiLog = repository.save(aLog);
		} catch (Exception ex) {
			ex.printStackTrace();
			return null;
		}
		return apiLog;
	}

    /**
     * 按id查询
     * @param id
     * @return
     */
	public ApiLog findOneApiLog(long id) {
		ApiLog apiLog = new ApiLog();
		try {
			apiLog = repository.findOne(id);
		} catch (Exception ex) {
			ex.printStackTrace();
			return null;
		}
		return apiLog;
	}

    /**
     * 查询全部文档
     * @return
     */
	public List<ApiLog> findAllApiLog() {
		List<ApiLog> list = new ArrayList<>();
		try {
			Iterable<ApiLog> aIterable = repository.findAll();
			for (ApiLog apiLog : aIterable) {
				list.add(apiLog);
			}
		} catch (Exception ex) {
			ex.printStackTrace();
			return null;
		}
		return list;
	}

  /**
     * 按条件过滤查询
     * @param b_time
     * @param e_time
     * @return
     */
	public List<ApiLog> findApiLogByDate(String b_time,String e_time) {
		List<ApiLog> list = new ArrayList<>();
		try {
			// 单个字符串
//			QueryBuilder qb0 = QueryBuilders.termQuery("id", "0");
			// 闭区间
			QueryBuilder qb1 = QueryBuilders.rangeQuery("c_time").from(b_time).to(e_time);
			// 大于
			QueryBuilder qb2 = QueryBuilders.rangeQuery("uid").gt(0);
            // 过滤多条件
			QueryBuilder qb = QueryBuilders.boolQuery().must(qb1).must(qb2);

			Iterable<ApiLog> aIterable = repository.search(qb);
			for (ApiLog apiLog : aIterable) {
				list.add(apiLog);
			}
		} catch (Exception ex) {
			ex.printStackTrace();
			return null;
		}
		return list;
	}
}

4.声明ElasticsearchRepository,可理解为dao层

package com.demo.dao;

import org.springframework.data.elasticsearch.repository.ElasticsearchRepository;
import com.demo.ApiLog;

public interface ApiLogSearchRepository extends ElasticsearchRepository<ApiLog, Long>{

}

参考博文:

常用查询方法QueryBuilder构造举例API:

https://blog.csdn.net/u012546526/article/details/74184769

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值