目录
pom文件依赖坐标
配置文件:application.yml
映射配置文件:mapper.GoodsMapper.xml
mybatis功能类:GoodMapper.interface
ElasticSearch配置类:ElasticSearchConfig.class
实体类:Goods.class
测试用例
pom文件依赖坐标
org.elasticsearch.client
elasticsearch-rest-high-level-client
7.4.0
org.elasticsearch.client
elasticsearch-rest-client
7.4.0
org.elasticsearch
elasticsearch
7.4.0
com.alibaba
fastjson
1.2.4
org.mybatis.spring.boot
mybatis-spring-boot-starter
2.1.0
mysql
mysql-connector-java
com.alibaba
fastjson
1.2.4
配置文件:application.yml
elasticsearch:
host: 192.168.23.129
port: 9200
# datasource
spring:
datasource:
url: jdbc:mysql://192.168.23.129:3306/db1?serverTimezone=UTC
username: root
password: caobotao
driver-class-name: com.mysql.cj.jdbc.Driver
# mybatis
mybatis:
mapper-locations: classpath:mapper
public abstract List findAll();
}
ElasticSearch配置类:ElasticSearchConfig.class
@Configuration
@ConfigurationProperties(prefix = "elasticsearch")
public class ElasticSearchConfig {
private String host;
private int port;
public String getHost() {
return host;
}
public void setHost(String host) {
this.host = host;
}
public int getPort() {
return port;
}
public void setPort(int port) {
this.port = port;
}
@Bean
public RestHighLevelClient client(){
return new RestHighLevelClient(RestClient.builder(
new HttpHost(
host,
port,
"http"
)
));
}
}
实体类:Goods.class
public class Goods {
private int id;
private String title;
private double price;
private int stock;
private int saleNum;
private Date createTime;
private String categoryName;
private String brandName;
private Map spec;
@JSonField(serialize = false) // 在转换JSON时,忽略该字段
private String specStr; //接收数据库的信息 "{}"
...... ......
}
测试用例
@SpringBootTest
class ElasticsearchDemoApplicationTests {
@Autowired
private RestHighLevelClient client;
@Autowired
private GoodsMapper goodsMapper;
@Test
public void importData() throws IOException {
// 1.查询所有数据
List goods = goodsMapper.findAll();
System.out.println(goods.size());
// 2.Bulk导入
BulkRequest bulkRequest = new BulkRequest();
// 2.1循环goodList,为indexrequest添加数据
for (Goods good : goods) {
// 2.2 设置spec规格的数据,map数据
good.setSpec(JSON.parseObject(good.getSpecStr(), Map.class));
IndexRequest indexRequest = new IndexRequest("goods");
indexRequest.id(good.getId()+"").source(JSON.toJSonString(good), XContentType.JSON);
bulkRequest.add(indexRequest);
}
client.bulk(bulkRequest, RequestOptions.DEFAULT);
}
}
elasticsearch:
host: 192.168.23.129
port: 9200
# datasource
spring:
datasource:
url: jdbc:mysql://192.168.23.129:3306/db1?serverTimezone=UTC
username: root
password: caobotao
driver-class-name: com.mysql.cj.jdbc.Driver
# mybatis
mybatis:
mapper-locations: classpath:mapper
public abstract List findAll();
}
ElasticSearch配置类:ElasticSearchConfig.class
@Configuration
@ConfigurationProperties(prefix = "elasticsearch")
public class ElasticSearchConfig {
private String host;
private int port;
public String getHost() {
return host;
}
public void setHost(String host) {
this.host = host;
}
public int getPort() {
return port;
}
public void setPort(int port) {
this.port = port;
}
@Bean
public RestHighLevelClient client(){
return new RestHighLevelClient(RestClient.builder(
new HttpHost(
host,
port,
"http"
)
));
}
}
实体类:Goods.class
public class Goods {
private int id;
private String title;
private double price;
private int stock;
private int saleNum;
private Date createTime;
private String categoryName;
private String brandName;
private Map spec;
@JSonField(serialize = false) // 在转换JSON时,忽略该字段
private String specStr; //接收数据库的信息 "{}"
...... ......
}
测试用例
@SpringBootTest
class ElasticsearchDemoApplicationTests {
@Autowired
private RestHighLevelClient client;
@Autowired
private GoodsMapper goodsMapper;
@Test
public void importData() throws IOException {
// 1.查询所有数据
List goods = goodsMapper.findAll();
System.out.println(goods.size());
// 2.Bulk导入
BulkRequest bulkRequest = new BulkRequest();
// 2.1循环goodList,为indexrequest添加数据
for (Goods good : goods) {
// 2.2 设置spec规格的数据,map数据
good.setSpec(JSON.parseObject(good.getSpecStr(), Map.class));
IndexRequest indexRequest = new IndexRequest("goods");
indexRequest.id(good.getId()+"").source(JSON.toJSonString(good), XContentType.JSON);
bulkRequest.add(indexRequest);
}
client.bulk(bulkRequest, RequestOptions.DEFAULT);
}
}
public class Goods {
private int id;
private String title;
private double price;
private int stock;
private int saleNum;
private Date createTime;
private String categoryName;
private String brandName;
private Map spec;
@JSonField(serialize = false) // 在转换JSON时,忽略该字段
private String specStr; //接收数据库的信息 "{}"
...... ......
}



