专业的编程技术博客社区

网站首页 > 博客文章 正文

SpringBoot整合之ElasticSearch(springboot整合elasticsearch6)

baijin 2024-08-26 10:20:53 博客文章 4 ℃ 0 评论

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

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表