热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Springboot操作Elasticsearch方式一【springdataelasticsearch】

博主的环境是windows+elasticsearch6.7.1+kibana6.7.1{"name":&quo

  博主的环境是windows+elasticsearch6.7.1+kibana 6.7.1

{
  "name" : "TDo83fR",
  "cluster_name" : "elasticsearch",
  "cluster_uuid" : "4-RI-qcBR46U9FtwxgEJ8g",
  "version" : {
    "number" : "6.7.1",
    "build_flavor" : "oss",
    "build_type" : "zip",
    "build_hash" : "2f32220",
    "build_date" : "2019-04-02T15:59:27.961366Z",
    "build_snapshot" : false,
    "lucene_version" : "7.7.0",
    "minimum_wire_compatibility_version" : "5.6.0",
    "minimum_index_compatibility_version" : "5.0.0"
  },
  "tagline" : "You Know, for Search"
}
  • 添加ES依赖,不同版本springboot与ES环境依赖版本不同


         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    4.0.0
    com.example
    elasticsearch
    0.0.1-SNAPSHOT
    elasticsearch
    Demo project for Spring Boot

    
        org.springframework.boot
        spring-boot-starter-parent
        2.2.5.RELEASE
        
    
    
        
        
            org.springframework.data
            spring-data-elasticsearch

        

        
            org.springframework.boot
            spring-boot-starter-web
        

        
            org.springframework.boot
            spring-boot-starter-test
            test
            
                
                    org.junit.vintage
                    junit-vintage-engine
                
            
        


        
        
            org.projectlombok
            lombok
            true
            1.18.12
        

        
            com.alibaba
            fastjson
            1.2.54
        
    
    
        
            
                org.springframework.boot
                spring-boot-maven-plugin
            
        
    
  • 定义Article类
package com.example.elasticsearch.model;

import lombok.Data;
import org.springframework.data.annotation.Id;
import org.springframework.data.elasticsearch.annotations.Document;
import java.io.Serializable;
import java.util.Date;

//通过这个注解,可以不用写gettersetter方法,有时不好用
@Data
@Document(indexName = "article",type = "_doc")
public class Article implements Serializable {

    // 必须指定一个id
    @Id
    private String id;

    private String title;

    private String content;

    private Integer userId;

    private Date createTime;


}
  • 创建连接配置类ElasticsearchConfig
package com.example.elasticsearch.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.elasticsearch.client.TransportClientFactoryBean;

@Configuration
public class ElasticsearchConfig {
    @Bean
    TransportClientFactoryBean client() {
        TransportClientFactoryBean bean=new TransportClientFactoryBean();
        bean.setClusterName("elasticsearch");//默认为:elasticsearch
        bean.setClusterNodes("127.0.0.1:9300");//http连接9200,客户端方式9300
        return bean;
    }
}
  • 创建ArticleRepository接口,实现ElasticsearchRepository接口
package com.example.elasticsearch.service;

import com.example.elasticsearch.model.Article;
import org.springframework.data.elasticsearch.repository.ElasticsearchRepository;
import org.springframework.stereotype.Repository;

@Repository
public interface ArticleRepository extends ElasticsearchRepository {

}
  • 测试接口ArticleController类
package com.example.elasticsearch.controller;

import com.example.elasticsearch.model.Article;
import com.example.elasticsearch.response.Result;
import com.example.elasticsearch.service.ArticleRepository;
import lombok.extern.slf4j.Slf4j;
import org.elasticsearch.index.query.*;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Sort;
import org.springframework.data.elasticsearch.core.ElasticsearchOperations;
import org.springframework.data.elasticsearch.core.query.NativeSearchQueryBuilder;
import org.springframework.data.elasticsearch.core.query.SearchQuery;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.*;

import java.util.Date;
import java.util.List;
import java.util.Optional;
import java.util.stream.Collectors;

@RestController
@RequestMapping("/article")
@Slf4j
public class ArticleController {

    private final static Logger logger = LoggerFactory.getLogger(ArticleController.class);

    @Autowired
    private ArticleRepository articleRepository;

//    @Autowired
//    private ElasticsearchRestTemplate elasticsearchRestTemplate; //查询

//    @Autowired
//    private ElasticsearchOperations elasticsearchOperations;

    //查询数据
    @GetMapping("{id}")
    public Result findById(@PathVariable String id) {
        Optional
article = articleRepository.findById(id); return Result.SUCCESS(article); } //删除数据 @DeleteMapping("{id}") public Result delete(@PathVariable String id) { // articleRepository.deleteAll(); articleRepository.deleteById(id); return Result.SUCCESS("删除成功"); } //保存数据 @PostMapping("save") public Result save(@RequestBody Article article) { if (article == null || StringUtils.isEmpty(article.getTitle())) { return Result.FAIL("标题不能为空"); } else if (StringUtils.isEmpty(article.getContent())) { return Result.FAIL("内容不能为空"); } article.setCreateTime(new Date()); Article a = articleRepository.save(article); if (a.getId() != null) return Result.SUCCESS("保存成功"); else return Result.FAIL("保存失败"); } @GetMapping("list") public Result list(@RequestParam(name = "pageLimit", defaultValue = "10") Integer pageLimit, @RequestParam(name = "pageCurrent", defaultValue = "1") Integer pageCurrent) { try { // 分页参数 Pageable pageable = PageRequest.of(pageCurrent-1,pageLimit); // QueryStringQueryBuilder builder = new QueryStringQueryBuilder(""); // SearchQuery searchQuery = new NativeSearchQueryBuilder().withPageable(pageable).withQuery(builder).build(); // System.out.println("查询的语句:" + searchQuery.getQuery().toString()); Iterable
articles = articleRepository.findAll(pageable);//(searchQuery); return Result.SUCCESS(articles); } catch (Exception ex) { logger.error(ex.getMessage()); } return Result.FAIL(); } }
  • 通过postman测试结果如图:

Springboot 操作Elasticsearch 方式一 【spring-data-elasticsearch】

Springboot 操作Elasticsearch 方式一 【spring-data-elasticsearch】

Springboot 操作Elasticsearch 方式一 【spring-data-elasticsearch】


推荐阅读
  • Activiti7流程定义开发笔记
    本文介绍了Activiti7流程定义的开发笔记,包括流程定义的概念、使用activiti-explorer和activiti-eclipse-designer进行建模的方式,以及生成流程图的方法。还介绍了流程定义部署的概念和步骤,包括将bpmn和png文件添加部署到activiti数据库中的方法,以及使用ZIP包进行部署的方式。同时还提到了activiti.cfg.xml文件的作用。 ... [详细]
  • 本文讨论了Alink回归预测的不完善问题,指出目前主要针对Python做案例,对其他语言支持不足。同时介绍了pom.xml文件的基本结构和使用方法,以及Maven的相关知识。最后,对Alink回归预测的未来发展提出了期待。 ... [详细]
  • Struts2+Sring+Hibernate简单配置
    2019独角兽企业重金招聘Python工程师标准Struts2SpringHibernate搭建全解!Struts2SpringHibernate是J2EE的最 ... [详细]
  • SpringBoot整合阿里云OSS实现单个图片上传和批量上传
    SpringBoot整合阿里云OSS实现单个图片上传和批量上传 ... [详细]
  • 如何实现织梦DedeCms全站伪静态
    本文介绍了如何通过修改织梦DedeCms源代码来实现全站伪静态,以提高管理和SEO效果。全站伪静态可以避免重复URL的问题,同时通过使用mod_rewrite伪静态模块和.htaccess正则表达式,可以更好地适应搜索引擎的需求。文章还提到了一些相关的技术和工具,如Ubuntu、qt编程、tomcat端口、爬虫、php request根目录等。 ... [详细]
  • 本文介绍了在Python3中如何使用选择文件对话框的格式打开和保存图片的方法。通过使用tkinter库中的filedialog模块的asksaveasfilename和askopenfilename函数,可以方便地选择要打开或保存的图片文件,并进行相关操作。具体的代码示例和操作步骤也被提供。 ... [详细]
  • 本文介绍了在Windows环境下如何配置php+apache环境,包括下载php7和apache2.4、安装vc2015运行时环境、启动php7和apache2.4等步骤。希望对需要搭建php7环境的读者有一定的参考价值。摘要长度为169字。 ... [详细]
  • mac php错误日志配置方法及错误级别修改
    本文介绍了在mac环境下配置php错误日志的方法,包括修改php.ini文件和httpd.conf文件的操作步骤。同时还介绍了如何修改错误级别,以及相应的错误级别参考链接。 ... [详细]
  • 如何提高PHP编程技能及推荐高级教程
    本文介绍了如何提高PHP编程技能的方法,推荐了一些高级教程。学习任何一种编程语言都需要长期的坚持和不懈的努力,本文提醒读者要有足够的耐心和时间投入。通过实践操作学习,可以更好地理解和掌握PHP语言的特异性,特别是单引号和双引号的用法。同时,本文也指出了只走马观花看整体而不深入学习的学习方式无法真正掌握这门语言,建议读者要从整体来考虑局部,培养大局观。最后,本文提醒读者完成一个像模像样的网站需要付出更多的努力和实践。 ... [详细]
  • Spring框架《一》简介
    Spring框架《一》1.Spring概述1.1简介1.2Spring模板二、IOC容器和Bean1.IOC和DI简介2.三种通过类型获取bean3.给bean的属性赋值3.1依赖 ... [详细]
  • SpringBoot简单日志配置
     在生产环境中,只打印error级别的错误,在测试环境中,可以调成debugapplication.properties文件##默认使用logbacklogging.level.r ... [详细]
  • 1.dd命令dd命令的全称为diskdump,对系统所有用户开放。该命令用于复制磁盘的数据块,且可在复制文件的同时指定转换的文件格式。命令选项参数说明ifFILE:输入文件名称,默 ... [详细]
  • KVM配置调整
    一内存CPU调整1.1增大虚拟机内存[root@k8s-01~]#virshshutdownvm01-centos7域vm01-centos7被关闭[root@k8s-01~]#v ... [详细]
  • 主从复制_mysql主从复制简介
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了mysql主从复制简介相关的知识,希望对你有一定的参考价值。  ... [详细]
  • asp.net 有什么框架,有什么技术
    原文地址:http:www.cnblogs.comvirusswbarchive201201102318169.html文章写的很好,转载一些到自己的博 ... [详细]
author-avatar
mobiledu2502862117
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有