SpringBoot之整合elasticsearch

环境:

ES5.5

SpringBoot2.0.0

整合方式采用 spring-data-elasticsearch

增加maven

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

application.yml

spring:
    data:
        elasticsearch:
          cluster-name: my_cluster #es安装时配置的集群名称
          cluster-nodes: 192.168.111.129:9300 #配置es节点信息,多个逗号分隔

实体类

import org.springframework.data.annotation.Id;
import org.springframework.data.elasticsearch.annotations.Document;
import java.io.Serializable;

/**
 * indexName:索引名  类似数据库名
 * type:类型 类似表名
 */
@Document(indexName = "zns", type = "book")
public class Book implements Serializable {
    @Id
    String id;
    String name;
    String author;

    public String getId() {
        return id;
    }

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

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getAuthor() {
        return author;
    }

    public void setAuthor(String author) {
        this.author = author;
    }
}
扫描二维码关注公众号,回复: 6811452 查看本文章

dao集成ElasticsearchRepository

import com.zns.search.server.entity.Book;
import org.springframework.data.elasticsearch.repository.ElasticsearchRepository;
import org.springframework.stereotype.Component;

@Component
public interface BookRepository extends ElasticsearchRepository<Book,String> {
   Book queryBookById(String id);
}

测试

import com.zns.search.server.dao.BookRepository;
import com.zns.search.server.entity.Book;
import org.elasticsearch.index.query.QueryBuilders;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.elasticsearch.core.query.NativeSearchQueryBuilder;
import org.springframework.data.elasticsearch.core.query.SearchQuery;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.ArrayList;
import java.util.List;

@RestController
@RequestMapping("/book")
public class BookController {

    @Autowired
    private BookRepository bookRepository;

    @RequestMapping("/get")
    public Book get() {
        return  bookRepository.queryBookById("1");
    }

    @RequestMapping("/add")
    public void add() {
        for(int i=1;i<=100;i++){
            Book book=new Book();
            book.setId(String.valueOf(i));
            book.setName("名称"+String.valueOf(i));
            book.setAuthor("作者"+String.valueOf(i));
            bookRepository.save(book);
        }
    }

    @RequestMapping("/update")
    public void update() {
        Book book = bookRepository.queryBookById("1");
        book.setName("新名称");
        bookRepository.save(book);
    }

    @RequestMapping("/delete")
    public void delete() {
        Book book = bookRepository.queryBookById("1");
        bookRepository.delete(book);
    }

    @RequestMapping("/getList")
    public List<Book> getList() {
        List<Book> list = new ArrayList<>();

        /*MatchQueryBuilder matchQueryBuilder = new MatchQueryBuilder("id", "1");
        Iterable<Book> iterable = bookRepository.search(matchQueryBuilder);
        iterable.forEach(e->list.add(e));*/

        SearchQuery searchQuery = new NativeSearchQueryBuilder().build();
        Iterable<Book> iterable = bookRepository.search(searchQuery);
        iterable.forEach(e->list.add(e));
        return list;
    }

    @RequestMapping("/page")
    public Page<Book> page() {
        Integer pageNo=1;
        Integer pageSize=10;
        String keyword="名";
        SearchQuery searchQuery = new NativeSearchQueryBuilder()
                .withQuery(QueryBuilders.matchPhraseQuery("name", keyword))
                .withPageable(PageRequest.of(pageNo, pageSize))
                .build();
        return bookRepository.search(searchQuery);
    }
}

猜你喜欢

转载自www.cnblogs.com/zengnansheng/p/11204054.html