Springboot整合SpringDataElasticSearch操作elasricSearch

说明:

SpringDataElasticsearch 是将Spring的核心概念应用于ElasticSearch搜索引擎的开发解决方案,提供一个"模板"作为搞基抽象,用于存储,查询,排序和面向文档
github地址: https://github.com/spring-projects/spring-data-elasticsearch

注: SpringDataElasticsearch使用的时候有版本要求,本示例的版本为
springboot 2.1.3.RELEASE + spring-data-elasticsearch 3.1.5 +elasticsearch 6.4.3

一. 添加依赖

修改Maven依赖,pom.xml如下



    4.0.0
    
        org.springframework.boot
        spring-boot-starter-parent
        2.1.3.RELEASE
         
    
    com.jetlee
    es
    0.0.1-SNAPSHOT
    es
    Demo project for Spring Boot

    
        1.8
    

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

        
            org.springframework.boot
            spring-boot-starter-test
            test
        
        
            org.springframework.boot
            spring-boot-starter-data-elasticsearch
        
    

    
        
            
                org.springframework.boot
                spring-boot-maven-plugin
            
        
    



二. 修改application.properties配置文件

添加如下内容

# 配置es服务器地址
spring.data.elasticsearch.cluster-nodes= 127.0.0.1:9300 
# 配置es服务器集群名称
spring.data.elasticsearch.cluster-name= my-application

三. 使用示例

以article为示例,来写对es的操作

1. 编写Article的实体类

package com.jetlee.es.domain;

import org.springframework.data.annotation.Id;
import org.springframework.data.elasticsearch.annotations.Document;
import org.springframework.data.elasticsearch.annotations.Field;
import org.springframework.data.elasticsearch.annotations.FieldType;
import org.springframework.format.annotation.DateTimeFormat;

import java.util.Date;
// indexName为索引名称,type为该索引下的类型
@Document(indexName = "blog",type = "article")
public class Article {

    @Id
    private Long id;
  //设置字段名称及索引
    @Field(type = FieldType.Text,analyzer = "ik_max_word")
    private String title;

    @Field(type = FieldType.Text,analyzer = "ik_max_word")
    private String content;

    @Field(type = FieldType.Date)
    private Date publishDate;

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getTitle() {
        return title;
    }

    public void setTitle(String title) {
        this.title = title;
    }

    public String getContent() {
        return content;
    }

    public void setContent(String content) {
        this.content = content;
    }

    public Date getPublishDate() {
        return publishDate;
    }

    public void setPublishDate(Date publishDate) {
        this.publishDate = publishDate;
    }
}

2. 编写ArticleRepository文件

package com.jetlee.es.repository;

import com.jetlee.es.domain.Article;
import org.springframework.data.elasticsearch.repository.ElasticsearchRepository;

public interface ArticleReposotory extends ElasticsearchRepository {


    }

3. 编写ArticleController控制器类

package com.jetlee.es.controller;


import com.jetlee.es.domain.Article;
import com.jetlee.es.repository.ArticleReposotory;
import com.jetlee.es.utils.TimeUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

import java.text.ParseException;


@RestController
public class ArticleController {

    @Autowired
    ArticleReposotory articleReposotory;

    @GetMapping("/article/add")
    public String add(@RequestParam("id") Long id, @RequestParam("title") String title, @RequestParam("content") String content, @RequestParam("publishDate") String publishDate) throws ParseException {

        Article article = new Article();
        article.setId(id);
        article.setTitle(title);
        article.setContent(content);
        article.setPublishDate(TimeUtil.toDate(publishDate));
        return articleReposotory.save(article).toString();

    }

    @GetMapping("/article/get")

    public Object get(){
        Iterable
list = articleReposotory.findAll(); return list; }

4. 启动服务

四.使用测试

1.添加数据

打开浏览器,访问[http://127.0.0.1:8080/article/add?id=123212&title=测试文章标题&content=测试文章内容&publishDate=2019-07-05 09:56:29](http://127.0.0.1:8080/article/add?id=123212&title=测试文章标题&content=测试文章内容&publishDate=2019-07-05 09:56:29)
或者使用postman

图片.png

返回如下数据,即为插入成功

2. 查询刚刚添加上的数据

浏览器访问http://127.0.0.1:8080/article/get

或者使用postman


图片.png

返回如下,读取成功

你可能感兴趣的:(Springboot整合SpringDataElasticSearch操作elasricSearch)