栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

ElasticSearch-导入数据-代码实现

ElasticSearch-导入数据-代码实现

需求:将数据库中Goods表的数据导入到ES索引库中

目录

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

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/487143.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号