ElasticSearch第一个小例子

具体的开发步骤:

第一步当然还是先引入所需要用到的依赖:

<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-elasticsearch</artifactId>
        </dependency>
        <!-- https://mvnrepository.com/artifact/com.sun.jna/jna -->
        <dependency>
            <groupId>com.sun.jna</groupId>
            <artifactId>jna</artifactId>
            <version>3.0.9</version>
        </dependency>

第二步在application.properties配置文件中加入两个属性:

这里的ip地址就是我们前边博客所述的在linux上搭建elasticsearch环境的主机地址

9200:网页端访问所用的端口

9300:程序端所用的端口 由于这里是程序端 所以我们用的是ip地址+9300

正式代码的编写:  例子是一个分页查询博客  这里我们走的是直接添加的数据 没有走到数据库物理表

1.创建实体

package cn.leon.entity;

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

import java.io.Serializable;
import java.lang.annotation.Documented;

/**
 * Created by leon 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(String title, String summary, String content) {
        this.title = title;
        this.summary = summary;
        this.content = content;
    }

    public EsBlog() {


    }

    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;
    }
}

2.dao层

package cn.leon.dao;

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

/**
 * Created by leon on 2018/7/6.
 */
public interface EsBlogRepository extends ElasticsearchRepository<EsBlog,String> {

    //分页查询博客
    Page<EsBlog> findByTitleOrSummaryOrContent(String title, String summary, String content, Pageable pageable);




}

3.测试类:

package cn.leon;

import cn.leon.dao.EsBlogRepository;
import cn.leon.entity.EsBlog;
import static org.assertj.core.api.Assertions.assertThat;

import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
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.test.context.junit4.SpringRunner;
import org.springframework.boot.test.context.SpringBootTest;

/**
 * Created by leon on 2018/7/6.
 */
@RunWith(SpringRunner.class)
@SpringBootTest
public class Springboot03ApplicationTests {

    @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());
        }
    }



}

最后运行出来的结果是:打印出以下内容

第一次走test测试的时候  项目启动会比较慢,耐心等待一下

项目启动之前 必须先把ES的服务跑起来 这样项目才能正常运行

 

posted @ 2018-07-08 22:25  风骚少年  阅读(1414)  评论(0编辑  收藏  举报
AmazingCounters.com