1、Spring Data Elasticsearch官方文档地址
https://docs.spring.io/spring-data/elasticsearch/docs/3.0.6.RELEASE/reference/html
SpringBoot整合elasticsearch版本说明:
https://github.com/spring-projects/spring-data-elasticsearch/wiki/Spring-Data-Elasticsearch—Spring-Boot—version-matrix
2、添加maven依赖,修改配置文件
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-elasticsearch</artifactId>
</dependency>
# Elasticsearch cluster name. es集群的名称
spring.data.elasticsearch.cluster-name=elasticsearch
# Comma-separated list of cluster node addresses.节点树 服务端的ip+端口号 。好多个节点localhost:9300,192.168.1.188:9300
spring.data.elasticsearch.cluster-nodes=192.168.1.188:9300
# Whether to enable Elasticsearch repositories.数据仓库是否开启,true开启
spring.data.elasticsearch.repositories.enabled=true
3、springboot整合搜索框架ElasticSearch实例
注意点:
索引名称记得小写,类属性名称也要小写
新建实体对象article
加上类注解 @Document(indexName = “blog”, type = “article”)
import org.springframework.data.elasticsearch.annotations.Document;
/**
* 功能描述:文章对象
* @Document表明是一个记录,对应数据库的每一条记录。
* indexName 指的是将记录存到哪个索引库中,这里是 blog(即哪个数据库)
* type 指的是将记录存到索引库哪个type中,这里是 article (即哪个表)
*/
@Document(indexName = "blog", type = "article")
public class Article implements Serializable {
private static final long serialVersionUID = 1L;
private long id;
private String title;
private String summary;
private String content;
private int pv;
}
接口继承ElasticSearchRepository,里面有很多默认实现
import org.springframework.data.elasticsearch.repository.ElasticsearchRepository;
//@Repository//(这个注解也可以,其注解包含@Component注解,表明它是一个数据仓库)
//@Document(indexName = "blog", type = "article", shards = 1, replicas = 0, refreshInterval = "-1")
@Component
public interface ArticleRepository extends ElasticsearchRepository<Article, Long> {
}
import org.elasticsearch.index.query.QueryBuilder;
import org.elasticsearch.index.query.QueryBuilders;
@RestController
@RequestMapping("/api/elasticsearch")
public class TestElasticsearchController {
@Autowired
private ArticleRepository articleRepository;
@PostMapping("save")
public Object save(long id,String title){
Article article = new Article();
article.setId(id);
article.setPv(123);
article.setContent("springboot整合elasticsearch");
article.setTitle(title);
article.setSummary("搜索框架整合");
articleRepository.save(article);
return JsonData.buildSuccess();
}
@GetMapping("search")
public Object search(String title){
//QueryBuilder queryBuilder = QueryBuilders.matchAllQuery(); //搜索全部文档
QueryBuilder queryBuilder = QueryBuilders.matchQuery("title", title);
Iterable<Article> list = articleRepository.search(queryBuilder);
return JsonData.buildSuccess(list);
}
}
QueryBuilder使用
API官方文档 https://www.elastic.co/guide/en/elasticsearch/client/java-api/1.3/query-dsl-queries.html
查看es数据
查看索引信息:http://localhost:9200/_cat/indices?v
查看某个索引库结构:http://localhost:9200/blog
查看某个对象:http://localhost:9200/blog/article/1
4、Spring Date简介
Spring Date可以理解为它可以为所有数据框架整合的中间件,例如redis,mongdb,以及马上要说的ElasticSearch
官网:https://spring.io/projects/spring-data
5、ElasticSearch5.6.8常用API
官方文档:https://www.elastic.co/guide/en/elasticsearch/reference/5.6/index.html