SpringBoot默认支持两种技术来和ElasticSearch交互,即Jest和SpringData ElasticSearch。
Jest(默认不生效)
1.首先需要导入jest的工具包(io.searchbox.client.JestClient)。
<dependency>
<groupId>io.searchbox</groupId>
<artifactId>jest</artifactId>
<version>5.3.3</version>
</dependency>
2.在application.properties中配置jest客户端连接地址。
spring.elasticsearch.jest.uris=http://47.107.185.20:9200
3.创建一个Bean用来存储文档数据。可以通过@JestId标识一个主键。
public class Article {
?
@JestId//标识这是一个主键
private Integer id;
?
private String author;
?
private String title;
?
private String content;
?
//gettter、setter方法省略
...
}
4.索引(保存)一个文档。
Article article=new Article();
article.setId(1);
article.setTitle("好消息");
article.setAuthor("zhangsan");
article.setContent("HelloWorld");
//构建一个索引功能,索引、类型、ID(这里用@JestId指定了可不用再设置)
Index index=new Index.Builder(article).index("atwunian").type("news").build();
//执行索引功能
try {
jestClient.execute(index);
} catch (IOException e) {
e.printStackTrace();
}
5.查询文档。
//查询表达式
String json="{\"query\":{" +
"\"match\":{" +
"\"content\":\"hello\"" +
"}" +
"}}";
?
//构建搜索功能
Search search=new Search.Builder(json).addIndex("atwunian").addType("news").build();
try {
//执行搜索,获得搜索结果
SearchResult result=jestClient.execute(search);
System.out.println(result.getJsonString());
} catch (IOException e) {
e.printStackTrace();
}
更多查询表达式用法可以查看官方文档进行深入了解:https://www.elastic.co/guide/cn/elasticsearch/guide/current/_document_oriented.html
SpringData ElasticSearch
1.导入SpringData依赖。需要注意的是ES版本有可能和Spring依赖版本不兼容,详情可以查看Spring官方文档:https://github.com/spring-projects/spring-data-elasticsearch
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-elasticsearch</artifactId>
</dependency>
2.在application.properties中配置节点信息。
#访问47.107.185.20:9200可以获得节点名称
spring.data.elasticsearch.cluster-name=elasticsearch
#节点采用9300进行通信,不是9200
spring.data.elasticsearch.cluster-nodes=47.107.185.20:9300
3.创建一个Bean用来存储文档数据。可以通过@Document来配置文档的索引、类型等属性。
//配置文档属性(索引、类型)
@Document(indexName="atwunian",type="book")
public class Book {
?
private Integer id;
?
private String bookName;
?
private String author;
//gettter、setter方法省略
...
}
4.也可以创建一个ElasticsearchRepository接口来操作ES,该接口与JPA类似,封装了一些基本的文档操作方法,同时也可以通过方法名命名规则自定义操作方法。
public interface BookRepository extends ElasticsearchRepository<Book,Integer> {
?
//参照
// https://docs.spring.io/spring-data/elasticsearch/docs/3.0.6.RELEASE/reference/html/
public List<Book> findByBookNameLike(String bookName) ;
}
5.保存一个索引文档。
Book book=new Book();
book.setId(3);
book.setBookName("西游记");
book.setAuthor("吴承恩");
bookRepository.index(book);
6.通过接口提供的方法来查询文档。
.//通过ID查询Book文档
Book book3=bookRepository.findOne(3);
7.通过自定义方法来查询文档。
//模糊查询所有bookName中含“游”字的文档数据
for(Book book2:bookRepository.findByBookNameLike("游")){
System.out.println(book2);
}
本文暂时没有评论,来添加一个吧(●'◡'●)