Elasticsearch入门之Spring Data Elasticsearch(四)

一.环境搭建

1.创建工程

2.导入依赖

<dependencies>

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

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

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

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
        </dependency>


		<dependency>
			<groupId>com.fasterxml.jackson.core</groupId>
			<artifactId>jackson-core</artifactId>
			<version>2.8.1</version>
		</dependency>
		<dependency>
			<groupId>com.fasterxml.jackson.core</groupId>
			<artifactId>jackson-databind</artifactId>
			<version>2.8.1</version>
		</dependency>
		<dependency>
			<groupId>com.fasterxml.jackson.core</groupId>
			<artifactId>jackson-annotations</artifactId>
			<version>2.8.1</version>
		</dependency>

    </dependencies>

编写配置文件:

3.编写持久类

@Document(indexName = "blog2",type = "article")
public class Article implements Serializable {
    @Id
    private Long id;
    private String title;
    private String content;

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

二.代码实现

service接口

public interface ArticleService {

    void save(Article article);

    Iterable<Article> findAll();

    Optional<Article> findOne(Long id);

    void updateArticle(Article article);

    void delArticle(Article article);

    //分页查询
    Page<Article> searchPage(Pageable pageable);
    //条件查询+分页
    List<Article> findByTitle(String title, Pageable pageable);
    //多条件查询+分页
    List<Article> findByTitleAndContent(String title,String content,Pageable pageable);



}

service实现类

@Service
public class ArticleServiceImpl implements ArticleService {

    @Autowired
    private ArticleDao articleDao;
    @Override
    public void save(Article article) {
        articleDao.save(article);
    }

    @Override
    public Iterable<Article> findAll() {
        return articleDao.findAll();
    }

    @Override
    public Optional<Article> findOne(Long id) {
        return articleDao.findById(id);
    }

    @Override
    public void updateArticle(Article article) {
        articleDao.save(article);
    }

    @Override
    public void delArticle(Article article) {
        articleDao.delete(article);
    }

    @Override
    public Page<Article> searchPage(Pageable pageable) {
        return articleDao.findAll(pageable);
    }

    @Override
    public List<Article> findByTitle(String title,Pageable pageable) {
        return articleDao.findByTitle(title,pageable);
    }

    @Override
    public List<Article> findByTitleAndContent(String title, String content, Pageable pageable) {
        return articleDao.findByTitleAndContent(title,content,pageable);
    }

dao接口


public interface ArticleDao extends ElasticsearchCrudRepository<Article,Long> {
    List<Article> findByTitle(String title, Pageable pageable);

    List<Article> findByTitleAndContent(String title, String content, Pageable pageable);
}

测试类:

@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest(classes = SpringBootRun.class)
public class testDemo {

    @Autowired
    private ArticleService articleService;

    @Autowired
    private ElasticsearchTemplate elasticsearchTemplate;

    @Test
    public void add(){
        Article article = new Article();
        article.setId(101L);
        article.setTitle("100是一个基于Lucene的搜索服务修改后");
        article.setContent("100Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是当前流行的企业级搜索引擎修改后");
        articleService.save(article);
    }
    @Test
    public void findAll(){
        Iterable<Article> all = articleService.findAll();
        for (Article article : all) {
            System.out.println(article.getContent());
        }
    }
    @Test
    public void findOne(){
        Optional<Article> one = articleService.findOne(100L);
        String content = one.get().getContent();
        System.out.println(content);
    }
    @Test
    public void  update(){
        Article article = new Article();
        article.setId(100L);
        article.setTitle("elasticSearch 3.0版本发布...更新");
        article.setContent("ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的\n" +
                "全文搜索引擎,基于RESTful web接口");
        articleService.save(article);
    }
    @Test
    public void delete(){
        Article article = new Article();
        article.setId(101L);
        articleService.delArticle(article);
    }
    //分页查询+排序
    @Test
    public void searchByPage(){
        Pageable pageable = PageRequest.of(0,5,Sort.by(Sort.Order.desc("id")));
        Page<Article> articles = articleService.searchPage(pageable);
        for (Article article : articles) {
            System.out.println(article.getContent());
        }
    }
    //通过命名查询
    @Test
    public  void searchSort(){
        List<Article> articleList = articleService.findByTitle("快乐",PageRequest.of(0 ,5 ,Sort.by(Sort.Order.desc("id"))));
        for (Article article : articleList) {
            System.out.println(article.getContent());
        }
    }
    //多条件查询
    @Test
    public void searchBytitleandContent(){
        List<Article> byTitleAndContent = articleService.findByTitleAndContent("快乐", "希望", PageRequest.of(0, 10, Sort.by(Sort.Order.desc("id"))));
        for (Article article : byTitleAndContent) {
            System.out.println(article.getContent());
        }
    }
}

 

三.Spring data Elasticsearch常用操作

方法我们已经在上面的代码的最后两个方法中编写了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

奋斗的小巍

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值