idea中SpringBoot整合Elasticsearch小案例

创建springboot,记得勾选上NoSql的Elasticsearch

创建成功后就可以写代码了

这是我项目的整体结构,我是在test里面完成的

创建EsBlog类

package cn.xzq.entity;

import org.springframework.data.annotation.Id;
import org.springframework.data.elasticsearch.annotations.Document;

import java.io.Serializable;

/**
 * Created by 10218 on 2018/7/6.
 */
@Document(indexName = "blog",type = "blog")
public class EsBlog implements Serializable{
    @Id
    private Integer id;
    private String title;
    private String summary;
    private String content;

    public EsBlog() {
    }


    public EsBlog( String title, String summary, String content) {
        this.title = title;
        this.summary = summary;
        this.content = content;
    }

    @Override
    public String toString() {
        return "EsBlog{" +
                "id=" + id +
                ", title='" + title + '\'' +
                ", summary='" + summary + '\'' +
                ", content='" + content + '\'' +
                '}';
    }

    public Integer getId() {
        return id;
    }

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

    public String getTitle() {
        return title;
    }

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

    public String getSummary() {
        return summary;
    }

    public void setSummary(String summary) {
        this.summary = summary;
    }

    public String getContent() {
        return content;
    }

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

创建完成后创建

EsBlogRepository类
package cn.xzq.repository;

import cn.xzq.entity.EsBlog;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.elasticsearch.repository.ElasticsearchRepository;

/**
 * Created by 10218 on 2018/7/6.
 */
public interface EsBlogRepository extends ElasticsearchRepository<EsBlog,String> {
    Page<EsBlog> findByTitleOrSummaryOrContent(String title, String summary, String content, Pageable pageable);
}

然后测试

package cn.xzq;

import cn.xzq.entity.EsBlog;
import cn.xzq.repository.EsBlogRepository;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
import org.springframework.test.context.junit4.SpringRunner;

import static org.assertj.core.api.Assertions.assertThat;


@RunWith(SpringRunner.class)
@SpringBootTest
public class SpringbootesApplicationTests {

    @Autowired
    private EsBlogRepository esBlogRepository;

    @Before
    public void initData(){
        esBlogRepository.deleteAll();
        esBlogRepository.save(new EsBlog("木兰花","纳兰性德","人生若只如初见,何事秋风悲画扇。"));
        esBlogRepository.save(new EsBlog("江城子","苏轼","十年生死两茫茫,不思量,自难忘。"));
        esBlogRepository.save(new EsBlog("卓文君","白头吟","愿得一心人,白头不相离。"));
    }
    @Test
    public void testFind(){
        Pageable pageable = new PageRequest(0,2);
        String title ="子";
        String summary = "苏";
        String content = ",";
        Page<EsBlog> page =  esBlogRepository.findByTitleOrSummaryOrContent(title,summary,content,pageable);
         assertThat(page.getTotalElements()).isEqualTo(1);
         for (EsBlog item:page.getContent()){
             System.out.println(item.getTitle()+"___"+item.getSummary()+"___"+item.getContent());
         }
    }

}

当然还有注意application.properties文件的配置

spring.data.elasticsearch.cluster-nodes=0.0.0.0:9300  #ip:9300

spring.data.elasticsearch.properties.transport.tcp.connect_timeout=1200s #这里是没找到连接目标的超时时间

运行结果如下



 ok!!!  以上就是本期的内容,谢谢!!!

猜你喜欢

转载自www.cnblogs.com/ztm1021810064/p/9282641.html