环境:
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); } }