首先,必须吐槽一下,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>
在properties文件中添加es设置:
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
}

好的,我们启动试试,报了一个错误,提示如下:

threw exception; nested exception is java.lang.NoSuchMethodError: org.jboss.netty.channel.socket.nio.NioWorker
 
这个是因为我的项目里的dubbo/zookeeper的netty包和es的netty包冲突了导致启动不了,解决方法是排除其中一个的netty包,我这里选择排除dubbo和zookeeper的netty包试试,但是后面发现排除了netty包会导致dubbo出错,有两全其美的办法麻烦给我留言下。
如下:
        <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的增删查改的更多相关文章

  1. Elasticsearch使用系列-ES增删查改基本操作+ik分词

    Elasticsearch使用系列-ES简介和环境搭建 Elasticsearch使用系列-ES增删查改基本操作+ik分词 一.安装可视化工具Kibana ES是一个NoSql数据库应用.和其他数据库 ...

  2. 从零开始开发一个Spring Boot Starter

    一.Spring Boot Starter简介 Starter是Spring Boot中的一个非常重要的概念,Starter相当于模块,它能将模块所需的依赖整合起来并对模块内的Bean根据环境( 条件 ...

  3. spring -boot s-tarter 详解

    Starter POMs是可以包含到应用中的一个方便的依赖关系描述符集合.你可以获取所有Spring及相关技术的一站式服务,而不需要翻阅示例代码,拷贝粘贴大量的依赖描述符.例如,如果你想使用Sprin ...

  4. 【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 ], ...

  5. SpringBoot 之Spring Boot Starter依赖包及作用

    Spring Boot 之Spring Boot Starter依赖包及作用 spring-boot-starter 这是Spring Boot的核心启动器,包含了自动配置.日志和YAML. spri ...

  6. Spring Boot Starter列表

    转自:http://blog.sina.com.cn/s/blog_798f713f0102wiy5.html Spring Boot Starter 基本的一共有43种,具体如下: 1)spring ...

  7. Spring Boot Starter 介绍

    http://www.baeldung.com/spring-boot-starters 作者:baeldung 译者:http://oopsguy.com 1.概述 依赖管理是任何复杂项目的关键部分 ...

  8. 手把手教你定制标准Spring Boot starter,真的很清晰

    写在前面 我们每次构建一个 Spring 应用程序时,我们都不希望从头开始实现具有「横切关注点」的内容:相反,我们希望一次性实现这些功能,并根据需要将它们包含到任何我们要构建的应用程序中 横切关注点 ...

  9. Spring Boot Starter自定义实现三步曲

    实现自定义的spring boot starter,只需要三步: 1.一个Bean 2.一个自动配置类 3.一个META-INF/spring.factories配置文件 下面用代码演示这三步. 项目 ...

随机推荐

  1. linux的档案权限和目录配置

    Linux一般将档案可存取的身份分为三个类别,分别是 owner/group/others /etc/passwd  账号信息 /etc/shadow 个人密码 /etc/group    组名记录 ...

  2. bzoj2754:[SCOI2012]喵星球上的点名(后缀自动机)

    Description a180285幸运地被选做了地球到喵星球的留学生.他发现喵星人在上课前的点名现象非常有趣.   假设课堂上有N个喵星人,每个喵星人的名字由姓和名构成.喵星球上的老师会选择M个串 ...

  3. mycat 1.6.6.1 distinct报错问题

    以前在mysql5.7上执行如下sql语句没有问题 SELECT DISTINCT u.*,c.content userCategory FROM m_user u LEFT JOIN m_categ ...

  4. debian下安装 locale 并设置 zh_CN.UTF-8 [转]

    root@Linkstation :~# apt-get install locales root@Linkstation:~# dpkg-reconfigure locales root@Links ...

  5. P5038 [SCOI2012]奇怪的游戏 二分+网络流

    $ \color{#0066ff}{ 题目描述 }$ Blinker最近喜欢上一个奇怪的游戏. 这个游戏在一个 \(N \times M\) 的棋盘上玩,每个格子有一个数.每次\(Blinker\)会 ...

  6. Aizu-1378- ICPC Asia 2017-Secret of Chocolate Poles

    Secret of Chocolate Poles Time Limit : 1 sec, Memory Limit : 262144 KB Problem A Secret of Chocolate ...

  7. Kamailio

    http://www.kamailio.org/wiki/cookbooks/4.1.x/core IMS 支持接口 MSC接口,信令:ISUP over IP和SIP, 用户面: rtp协议 PCR ...

  8. jquery ajax的getJSON使用

    getJSON的定义和用法 通过 HTTP GET 请求载入 JSON 数据. 在 jQuery 1.2 中,您可以通过使用 JSONP 形式的回调函数来加载其他网域的 JSON 数据,如 " ...

  9. Python——数据交换格式简要

    简单数据交换格式 CSV: 一般用  open()  函数和字符串拆分  split()  方法,但python有内置的csv模块 读: import csv with open(r"C:\ ...

  10. oracle闪回(flashback)的部分实用操作(彻底删除的除外)

    一.数据delete并且commit提交之后的闪回 (一):根据时间来恢复:1.查询数据库当前时间(目的是为了检查数据库时间是否与你电脑时间相近,避免时间不同而将数据恢复到错误时间点)select  ...