1.安装elasticsearch
安装参考https://blog.csdn.net/BushQiang/article/details/88680280
官网学习https://www.elastic.co/guide/cn/index.html
2.引入依赖
注意要查看自己安装的elasticsearch,与使用的版本是否对应的上,之前安装最新版本一直没有连接上。
版本关系如下
spring data elasticsearch | elasticsearch |
3.2.x | 6.5.0 |
3.1.x | 6.2.2 |
3.0.x | 5.5.0 |
2.1.x | 2.4.0 |
2.0.x | 2.2.0 |
1.3.x | 1.5.2 |
查看依赖关系图或者从仓库中我们就可以看到使用的版本是2.1的所以我们应该安装2.4的elasticsearch
<!--SpringBoot默认使用SpringData ElasticSearch模块进行操作--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-elasticsearch</artifactId> </dependency>
3.在需要存储的实体类上面使用@Document注解
该注解的几个属性
public @interface Document { String indexName(); //索引库的名称,个人建议以项目的名称命名 String type() default ""; //类型,个人建议以实体的名称命名 short shards() default 5; //默认分区数 short replicas() default 1; //每个分区默认的备份数 String refreshInterval() default "1s"; //刷新间隔 String indexStoreType() default "fs"; //索引文件存储类型 }
具体实现方法
@Document(indexName = "smlq",type = "book") public class Book { private Integer id; private String bookName; private String author; public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getBookName() { return bookName; } public void setBookName(String bookName) { this.bookName = bookName; } public String getAuthor() { return author; } public void setAuthor(String author) { this.author = author; } @Override public String toString() { return "Book{" + "id=" + id + ", bookName='" + bookName + '\'' + ", author='" + author + '\'' + '}'; } }
接口的编写需要继承ElasticsearchRepository类,该类继承于CrudRespository,使用的方法与Jpa相识
参考spring data elasticsearchhttps://docs.spring.io/spring-data/elasticsearch/docs/3.0.6.RELEASE/reference/html/
public interface BookRepository extends ElasticsearchRepository<Book,Integer> { public List<Book> findByBookNameLike(String bookName); }
测试
存
@Test public void test02(){ Book book = new Book(); book.setId(2); book.setBookName("西游记"); book.setAuthor("吴承恩"); bookRepository.index(book); }
网址查
代码查
@Test public void test03(){ for (Book book : bookRepository.findByBookNameLike("西")) { System.out.println(book); }; }