Springboot 整合 Spring Data Solr
1.创建索引库
2. 创建服务,引入spring data solr的起步依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-solr</artifactId>
</dependency>
3. 在yml文件中,配置solr地址
spring:
data:
solr:
host: http://localhost:8080/solr
4. 编写配置类,将SolrTemplate交由spring管理
@Bean
public SolrTemplate solrTemplate(SolrClient solrClient) {
return new SolrTemplate(solrClient);
}
5. 在managed.schem文件定义业务域
<field name="item_title" type="text_ik" indexed="true" stored="true"/>
<field name="item_price" type="pfloat" indexed="true" stored="true"/>
<field name="item_image" type="string" indexed="false" stored="true"/>
<field name="item_createtime" type="pdate" indexed="true" stored="true"/>
<field name="item_updatetime" type="pdate" indexed="true" stored="true"/>
<field name="item_category" type="string" indexed="true" stored="true" />
<field name="item_brand" type="string" indexed="true" stored="true"/>
<field name="spec" type="string" indexed="true" stored="true"/>
6. 使用Spring Data Solr中的@Field注解,建立实体类属性和域的映射关系。
@Data
@Table(name = "tb_item")
public class Item {
@Id
@Column(name="id")
@Field("id")
private Integer id;
@Column(name="title")
@Field("item_title")
private String title;
@Column(name="image")
@Field("item_image")
private String image;
@Column(name="price")
@Field("item_price")
private Double price;
@Column(name="create_time")
@Field("item_createtime")
private Date createTime;
@Column(name="update_time")
@Field("item_updatetime")
private Date updateTime;
@Column(name="category")
@Field("item_category")
private String category;
@Column(name="brand")
@Field("item_brand")
private String brand;
7.完成数据导入
@Test
public void test01() {
//1.从数据库中查询,根据属性与字段的映射关系封装成集合
List<Item> items = itemDao.selectAll();
//2.使用SolrTemplate完成导入,存入索引库
solrTemplate.saveBeans("collection1", items);
solrTemplate.commit("collection1");
}