社区微信群开通啦,扫一扫抢先加入社区官方微信群
社区微信群
Elasticsearch介绍
Elasticsearch,简称ES(全文搜索服务器),既可以作为NoSQL数据库,存储任意格式的文档和数据,同时,也可以作为大数据的分析。作为一个跨界开源产品。ES有如下特点:
安装Elasticsearch
bin
目录运行elasticsearch.bat
http://localhost:9200
出现以下输出:Elasticsearch的基本概念
Spring Data Elastic
Spring Data Elastic是Spring官方提供的访问ES的方式,相对于REST访问,更具有优势:
<!-- https://mvnrepository.com/artifact/org.elasticsearch/elasticsearch -->
<dependency>
<groupId>org.elasticsearch</groupId>
<artifactId>elasticsearch</artifactId>
<version>6.7.1</version>
</dependency>
spring:
data:
elasticsearch:
cluster-nodes: 127.0.0.1:9300
@Data
@Document(indexName = "product",type="book")
public class BookEntity {
@Id
private String id;
private String name;
private String message;
private Date postDate;
private String type;
}
//其中,@Document表示这是一个Elastic Data,indexName和type对应于
//Elasticsearch的Index和Type。本例中的索引是product,类型是book。
public interface BookDao extends CrudRepository<BookEntity,String> {
public List<BookEntity> getByMessage(String key);
}
//该接口继承了CrudRepository,再继续添加一个getByMessage方法,
//这是一个标准Spring Data命名,意味着Elastic Data会查询message字段。
@RestController
public class RestController {
@Autowired
private BookDao bookDao;
@RequestMapping("/springdata/book/{id}")
public BookEntity getBookById(@PathVariable String id){
//测试内置的findById
Optional<BookEntity> optional=bookDao.findById(id);
BookEntity bookEntity=optional.get();
return bookEntity;
}
@RequestMapping("/springdata/search/{key}")
public List<BookEntity> search(@PathVariable String key){
//测试全文搜索
List<BookEntity> list=bookDao.getByMessage(key);
return list;
}
@RequestMapping("/springdata/search/{key}/{page}")
public List<BookEntity> search(@PathVariable int page,@PathVariable String key){
int numberOfPage=5;
PageRequest pageRequest= PageRequest.of(page,numberOfPage);
//全文搜索翻页
Page<BookEntity> pages=bookDao.getByMessage(key,pageRequest);
long total=pages.getTotalElements();
long totalPage=pages.getTotalPages();
List<BookEntity> list=pages.getContent();
return list;
}
}
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!