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