spring-boot-starter-data-elasticsearch实现es的增删查改
首先,必须吐槽一下,springboot这个elasticsearch包对于elasticsearch的支持十分不友好,目前只支持很低版本的elasticsearch,如果有哪位大牛知道如何兼容更高版本的elasticsearch,欢迎给我留言。
es下载地址:https://www.elastic.co/downloads/elasticsearch
我测试的es版本是2.4.5,spring-boot-starter-data-elasticsearch不支持太高版本的elasticsearch。
另外,我是在windows下安装的,在官网下载好zip包后,到bin文件夹下,运行elasticsearch.bat,测试:http://localhost:9200/,能正确显示版本就可以了。
安装好后,我们在pom.xml文件添加依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-elasticsearch</artifactId>
<version>1.5.10.RELEASE</version>
</dependency>
spring.data.elasticsearch.cluster-name=elasticsearch es默认
spring.data.elasticsearch.cluster-nodes= 127.0.0.1:9300 es默认
实体类:
@Document(indexName = "monitoralarm", type = "monitorAlarms")//加上了@Document注解之后,默认情况下这个实体中所有的属性都会被建立索引、并且分词
public class MonitorAlarmVO implements Serializable { @Id
private Long id;
private String uniqueKey;
private Long monitoryPointId;
private int modelDivisionType;
private Long groupId;
private int type;
private int status;
private String serverHost;
private String data;
private int picWidth;
private int picHeight;
private String objects;
private Date alarmTime;
private Date createTime;
private boolean isRemove;
private Date removeTime;
}
接口:
import org.springframework.data.elasticsearch.repository.ElasticsearchRepository;
public interface MonitorAlarmRepository extends ElasticsearchRepository<MonitorAlarmVO, Long> {
    //Page<MonitorAlarmVO> findByGroupId(Long groupId);
}
controller:
public class MonitorAlarmController {
    @Autowired
    private MonitorAlarmRepository monitorAlarmRepository;
    //============================elasticsearch
    /**
     * 1、根据id查
     * @param id
     * @return
     */
    @GetMapping("/esById/{id}")
    public MonitorAlarmVO getBookById(@PathVariable Long id) {
        return monitorAlarmRepository.findOne(id);
    }
    /**
     * 2、查  ++:全文检索(根据整个实体的所有属性,可能结果为0个)
     * @param key
     * @return
     */
    @GetMapping("/esByKey/{key}")
    public List<MonitorAlarmVO> testSearch(@PathVariable String key) {
        QueryStringQueryBuilder builder = new QueryStringQueryBuilder(key);
        Iterable<MonitorAlarmVO> searchResult = monitorAlarmRepository.search(builder);
        Iterator<MonitorAlarmVO> iterator = searchResult.iterator();
        List<MonitorAlarmVO> list = new ArrayList<MonitorAlarmVO>();
        while (iterator.hasNext()) {
            list.add(iterator.next());
        }
        return list;
    }
    /**
     * 3、查   +++:分页、分数、分域(结果一个也不少)
     * @param page
     * @param size
     * @param q
     * @return
     * @return
     */
    @GetMapping("/{page}/{size}/{key}")
    public List<MonitorAlarmVO> searchCity(@PathVariable Integer page, @PathVariable Integer size, @PathVariable String key) {
        // 分页参数
        Pageable pageable = new PageRequest(page, size);
        // 分数,并自动按分排序
        FunctionScoreQueryBuilder functionScoreQueryBuilder = QueryBuilders.functionScoreQuery()
                .add(QueryBuilders.boolQuery().should(QueryBuilders.matchQuery("name", key)),
                        ScoreFunctionBuilders.weightFactorFunction(1000)) // 权重:name 1000分
                .add(QueryBuilders.boolQuery().should(QueryBuilders.matchQuery("message", key)),
                        ScoreFunctionBuilders.weightFactorFunction(100)); // 权重:message 100分
        // 分数、分页
        SearchQuery searchQuery = new NativeSearchQueryBuilder().withPageable(pageable)
                .withQuery(functionScoreQueryBuilder).build();
        Page<MonitorAlarmVO> searchPageResults = monitorAlarmRepository.search(searchQuery);
        return searchPageResults.getContent();
    }
    /**
     * 4、增
     * @param monitorAlarmVO
     * @return
     */
    @PostMapping("/esInsert")
    public MonitorAlarmVO insertBook(MonitorAlarmVO monitorAlarmVO) {
        monitorAlarmRepository.save(monitorAlarmVO);
        return monitorAlarmVO;
    }
    /**
     * 5、删 id
     * @param id
     * @return
     */
    @DeleteMapping("/esDelete/{id}")
    public MonitorAlarmVO insertBook(@PathVariable Long id) {
        MonitorAlarmVO monitorAlarmVO = monitorAlarmRepository.findOne(id);
        monitorAlarmRepository.delete(id);
        return monitorAlarmVO;
    }
    /**
     * 6、改
     * @param monitorAlarmVO
     * @return
     */
    @PutMapping("/esUpdate")
    public MonitorAlarmVO updateBook(MonitorAlarmVO monitorAlarmVO) {
        monitorAlarmRepository.save(monitorAlarmVO);
        return monitorAlarmVO;
    }
    //============================elasticsearch
}
好的,我们启动试试,报了一个错误,提示如下:
<dependency>
<groupId>com.alibaba.spring.boot</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<exclusions>
<exclusion>
<artifactId>netty</artifactId>
<groupId>org.jboss.netty</groupId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>com.101tec</groupId>
<artifactId>zkclient</artifactId>
<exclusions>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
</exclusion>
<exclusion>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
</exclusion>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
</exclusion>
<exclusion>
<groupId>io.netty</groupId>
<artifactId>netty</artifactId>
</exclusion>
</exclusions>
</dependency>
最后,我们可以启动项目,访问试试了。
spring-boot-starter-data-elasticsearch实现es的增删查改的更多相关文章
- Elasticsearch使用系列-ES增删查改基本操作+ik分词
		Elasticsearch使用系列-ES简介和环境搭建 Elasticsearch使用系列-ES增删查改基本操作+ik分词 一.安装可视化工具Kibana ES是一个NoSql数据库应用.和其他数据库 ... 
- 从零开始开发一个Spring Boot Starter
		一.Spring Boot Starter简介 Starter是Spring Boot中的一个非常重要的概念,Starter相当于模块,它能将模块所需的依赖整合起来并对模块内的Bean根据环境( 条件 ... 
- spring -boot s-tarter 详解
		Starter POMs是可以包含到应用中的一个方便的依赖关系描述符集合.你可以获取所有Spring及相关技术的一站式服务,而不需要翻阅示例代码,拷贝粘贴大量的依赖描述符.例如,如果你想使用Sprin ... 
- 【spring boot】【elasticsearch】spring boot整合elasticsearch,启动报错Caused by: java.lang.IllegalStateException: availableProcessors is already set to [8], rejecting [8
		spring boot整合elasticsearch, 启动报错: Caused by: java.lang.IllegalStateException: availableProcessors ], ... 
- SpringBoot 之Spring Boot Starter依赖包及作用
		Spring Boot 之Spring Boot Starter依赖包及作用 spring-boot-starter 这是Spring Boot的核心启动器,包含了自动配置.日志和YAML. spri ... 
- Spring Boot Starter列表
		转自:http://blog.sina.com.cn/s/blog_798f713f0102wiy5.html Spring Boot Starter 基本的一共有43种,具体如下: 1)spring ... 
- Spring Boot Starter 介绍
		http://www.baeldung.com/spring-boot-starters 作者:baeldung 译者:http://oopsguy.com 1.概述 依赖管理是任何复杂项目的关键部分 ... 
- 手把手教你定制标准Spring Boot starter,真的很清晰
		写在前面 我们每次构建一个 Spring 应用程序时,我们都不希望从头开始实现具有「横切关注点」的内容:相反,我们希望一次性实现这些功能,并根据需要将它们包含到任何我们要构建的应用程序中 横切关注点 ... 
- Spring Boot Starter自定义实现三步曲
		实现自定义的spring boot starter,只需要三步: 1.一个Bean 2.一个自动配置类 3.一个META-INF/spring.factories配置文件 下面用代码演示这三步. 项目 ... 
随机推荐
- ocp题库变化,052新加的考试题及答案整理-32
			32. Examine these commands and their output: • SQL> SELECT * FROM emp; • ENO ENAME • ---- ----- • ... 
- 【OCP|052】iZ0-052最新题库及答案整理-第9题
			9.Which is true about the Automatic Diagnostic Repository (ADR)? A) It includes diagnostic data for ... 
- 【maven】maven 子项目如何使用父项目的jar包
			如果父pom中使用的是 <dependencies>....</dependencies> 方式, 则子pom会自动使用pom中的jar包 如果父pom使用 <depen ... 
- Struts2框架action路径问题心得----》页面url请求怎么找action
			Struts2 页面url请求怎么找action Struts2 页面url请求如何找action 1.我们使用最原始的方法去查找action,不同注解. struts.xml文件先配置 <!- ... 
- P4850 [IOI2009]葡萄干raisins 记忆化搜索
			$ \color{#0066ff}{ 题目描述 }$ 普罗夫迪夫的著名巧克力大师Bonny需要切开一板带有葡萄干的巧克力.巧克力是一个包含许多相同的方形小块的矩形.小块沿着巧克力的边排列成n行m列,即 ... 
- 原生js 实现旋转木马
			<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ... 
- spring测试save方法报错
			用test类测试service的save方法时,报错如下: 2018-08-24 21:52:13,506 - could not read a hi value com.mysql.jdbc.exc ... 
- 高阶篇:4.4)FMEA手册的疑问与不足(个人观点)
			本章目的:如题,述说FMEA手册第四版的疑问与不足. 1.前言 作者接触FMEA,并真正将其作为可靠性设计方法,也是在近几年的时候,所以不能说算是一个FMEA专家吧. 但作者也有一些自己的优势,就是自 ... 
- P2472 [SCOI2007]蜥蜴
			传送门 求无法逃离的蜥蜴总数的最小值就是求最多逃离的蜥蜴总数 所以显然考虑最大流,一个流量的路径就相当于一只蜥蜴逃离的路径 发现每个位置有一个最大经过次数,所以把每个位置拆成两个点$x,y$,$x$ ... 
- django中使用时间帅选报RuntimeWarning: DateTimeField Coupon.valid_begin_date received a naive datetime (2018-08-16 20:51:40.135425) while time zone support is active.
			今天在使用当前时间进行筛选数据时出现了RuntimeWarning: DateTimeField Coupon.valid_begin_date received a naive datetime ( ... 
