Spring Boot

Springboot整合SpringDataElasticSea

2019-07-05  本文已影响0人  金_鹏

说明:

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如下

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.3.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.jetlee</groupId>
    <artifactId>es</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>es</name>
    <description>Demo project for Spring Boot</description>

    <properties>
        <java.version>1.8</java.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-elasticsearch</artifactId>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>

二. 修改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<Article,Long> {


    }

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<Article> 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图片.png

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

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

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

或者使用postman


图片.png图片.png

返回如下,读取成功

上一篇下一篇

猜你喜欢

热点阅读