SpringBoot of integration elasticsearch

surroundings:

ES5.5

SpringBoot2.0.0

Integration embodiment using spring-data-elasticsearch

 

Increase maven

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

 

application.yml

Spring: 
    Data: 
        elasticsearch: 
          Cluster-name: configured at installation my_cluster #es cluster name 
          cluster-nodes: 192.168.111.129:9300 # es node configuration information, a plurality of comma separated

 

Entity class

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

/ ** 
 * indexName: index name similar to the name of the database 
 * type: Type the table name similar 
 * / 
@Document (indexName = "ZnS", type = "Book" )
 public  class Book the implements the Serializable { 
    @Id 
    String ID; 
    String name; 
    String author; 

    public String getId () {
         return ID; 
    } 

    public  void the setId (String ID) {
         the 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;
    }
}

 

dao integrated 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);
}

test

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

 

Guess you like

Origin www.cnblogs.com/zengnansheng/p/11204054.html