07 Spring Data ElasticSearch使用
07 Spring Data ElasticSearch使用1 Spring Data ElasticSearch简介1.1 什么是Spring DataSpring Data是一个用于简化数据库访问,并支持云服务的开源框架。其主要目标是使得对数据的访问变得方便快 捷,并支持map-reduce框架和云计算数据服务。 Spring Data可以极大的简化JPA的写法,可以在几乎不用写实现 的...
07 Spring Data ElasticSearch使用
1 Spring Data ElasticSearch简介
1.1 什么是Spring Data
Spring Data是一个用于简化数据库访问,并支持云服务的开源框架。其主要目标是使得对数据的访问变得方便快 捷,并支持map-reduce框架和云计算数据服务。 Spring Data可以极大的简化JPA的写法,可以在几乎不用写实现 的情况下,实现对数据的访问和操作。除了CRUD外,还包括如分页、排序等一些常用的功能。
Spring Data的官网:http://projects.spring.io/spring-data/
Spring Data常用的功能模块如下:
1.2 什么是Spring Data ElasticSearch
Spring Data ElasticSearch 基于 spring data API 简化 elasticSearch操作,将原始操作elasticSearch的客户端API 进行封装 。Spring Data为Elasticsearch项目提供集成搜索引擎。Spring Data Elasticsearch POJO的关键功能区域 为中心的模型与Elastichsearch交互文档和轻松地编写一个存储库数据访问层。
官方网站:http://projects.spring.io/spring-data-elasticsearch/
2 Spring Data ElasticSearch入门
1)导入Spring Data ElasticSearch坐标
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring‐data‐elasticsearch</artifactId>
<version>3.0.5.RELEASE</version>
<exclusions>
<exclusion>
<groupId>org.elasticsearch.plugin</groupId>
<artifactId>transport‐netty4‐client</artifactId>
</exclusion>
</exclusions>
</dependency>
2)创建applicationContext.xml配置文件,引入elasticsearch命名空间
<?xml version="1.0" encoding="UTF‐8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema‐instance" xmlns:context="http://www.springframework.org/schema/context" xmlns:elasticsearch="http://www.springframework.org/schema/data/elasticsearch" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring‐beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring‐context.xsd
http://www.springframework.org.schema/data.elasticsearch
http://www.springframework.org.schema/data.elasticsearch/spring-elasticsearch-1.0.xsh
</beans>
3)编写实体Article
public class Article {
private Integer id;
private String title;
private String content;
public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getTitle() { return title; } public void setTitle(String title) {
this.title = title;
}
public String getContent() { return content; } public void setContent(String content) {
this.content = content;
}
@Override
public String toString() { return "Article [id=" + id + ", title=" + title + ", content=" + content + "]";
}
}
4)编写Dao
@Repository public interface ArticleRepository extends ElasticsearchRepository<Article, Integer> {
}
5)编写Service
public interface ArticleService { public void save(Article article);
}
@Service public class ArticleServiceImpl implements ArticleService { @Autowired
private ArticleRepository articleRepository;
public void save(Article article) {
articleRepository.save(article);
}
}
6) 配置applicationContext.xml
<?xml version="1.0" encoding="UTF‐8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema‐instance" xmlns:context="http://www.springframework.org/schema/context" xmlns:elasticsearch="http://www.springframework.org/schema/data/elasticsearch" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring‐beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring‐context.xsd http://www.springframework.org/schema/data/elasticsearch http://www.springframework.org/schema/data/elasticsearch/spring‐elasticsearch‐1.0.xsd ">
<!‐‐ 扫描Dao包,自动创建实例 ‐‐> <elasticsearch:repositories base‐package="com.itheima.dao"/>
<!‐‐ 扫描Service包,创建Service的实体 ‐‐>
<context:component‐scan base‐package="com.itheima.service"/> <!‐‐ 配置elasticSearch的连接 ‐‐>
<!‐‐ 配置elasticSearch的连接 ‐‐>
<elasticsearch:transport‐client id="client" cluster‐nodes="localhost:9300" cluster‐name="myelasticsearch"/>
<!‐‐ ElasticSearch模版对象 ‐‐>
<bean id="elasticsearchTemplate" class="org.springframework.data.elasticsearch.core.ElasticsearchTemplate">
<constructor‐arg name="client" ref="client"></constructor‐arg>
</bean>
</beans>
7)配置实体
基于spring data elasticsearch注解配置索引、映射和实体的关系
//@Document 文档对象 (索引信息、文档类型 )
@Document(indexName="blog3",type="article")
public class Article {
//@Id 文档主键 唯一标识
@Id
//@Field 每个文档的字段配置(类型、是否分词、是否存储、分词器 )
@Field(store=true, index = false,type = FieldType.Integer) private Integer id; @Field(index=true,analyzer="ik_smart",store=true,searchAnalyzer="ik_smart",type = FieldType.text)
private String title; @Field(index=true,analyzer="ik_smart",store=true,searchAnalyzer="ik_smart",type = FieldType.text)
private String content;
public Integer getId() { return id; }
public void setId(Integer id) { this.id = id; }
public String getTitle() { return title; }
public void setTitle(String title) {
this.title = title;
}
public String getContent() {
return content;
}
public void setContent(String content) { this.content = content; }
@Override
public String toString() { return "Article [id=" + id + ", title=" + title + ", content=" + content + "]";
}
}
其中,注解解释如下:
@Document(indexName="blob3",type="article"):
indexName:索引的名称(必填项)
type:索引的类型 @Id:主键的唯一标识
@Field(index=true,analyzer="ik_smart",store=true,searchAnalyzer="ik_smart",type = FieldType.text)
index:是否设置分词
analyzer:存储时使用的分词器
searchAnalyze:搜索时使用的分词器
store:是否存储
type: 数据类型
8)创建测试类SpringDataESTest
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations="classpath:applicationContext.xml")
public class SpringDataESTest {
@Autowired
private ArticleService articleService;
@Autowired
private TransportClient client;
@Autowired
private ElasticsearchTemplate elasticsearchTemplate;
/**创建索引和映射*/
@Test
public void createIndex(){
elasticsearchTemplate.createIndex(Article.class);
elasticsearchTemplate.putMapping(Article.class);
}
/**测试保存文档*/
@Test
public void saveArticle(){
Article article = new Article();
article.setId(100);
article.setTitle("测试SpringData ElasticSearch");
article.setContent("Spring Data ElasticSearch 基于 spring data API 简化 elasticSearch操 作,将原始操作elasticSearch的客户端API 进行封装 \n" + " Spring Data为Elasticsearch Elasticsearch项目提供集成搜索引擎"); articleService.save(article);
}
}
h操 作,将原始操作elasticSearch的客户端API 进行封装 \n" + " Spring Data为Elasticsearch Elasticsearch项目提供集成搜索引擎"); articleService.save(article);
}
}
更多推荐
所有评论(0)