记录ElasticSearch6.2.4+Jest开发笔记(3)- 数据导入ES

一、导入数据推荐使用批量导入

1、首先查询本地的所有数据进行导入,如果本地数据过大,也可以将本地数据分批次导入。

2、校验数据是否合法,因为我在导入数据的时候可能是测试的数据,存在脏数据,导致每次都不能成功导入数据,所以,在这里我加入对数据的校验。

3、将数据导到相对应的索引和类型下,我使用的是批量导入,所以,需要先将数据添加到列表,再执行下一步操作。

4、Bulk是ES的批量操作对象,也可以使用单个导入数据的方法(此方法一般使用在单个添加的时候使用,具体要看工作中的具体业务处理)。 

if (ElasticIndexEnum.BEAUTY_LOG.getValue().equals(indexName)) {
            List<BeautyLog> beautyLogs = mongoTemplate.find(query, BeautyLog.class);
            List<Index> indexList = new ArrayList<>();
            for (BeautyLog beautyLog : beautyLogs) {
                if (PubMethod.isEmpty(beautyLog)) {
                    continue;
                }
                Index index = new Index.Builder(beautyLog).index(ElasticIndexEnum.BEAUTY_LOG.getValue().toLowerCase()).
                        type(ElasticIndexTypeEnum.BEAUTY_LOG_INDEX_TYPE.getValue()).id(beautyLog.getId() + "").build();
                indexList.add(index);

            }
            Bulk bulk = new Bulk.Builder()
                    .defaultIndex(ElasticIndexEnum.BEAUTY_LOG.getValue().toLowerCase())
                    .defaultType(ElasticIndexTypeEnum.BEAUTY_LOG_INDEX_TYPE.getValue())
                    .addAction(indexList).build();
            BulkResult execute = jestClient.execute(bulk);
            if (!execute.isSucceeded()) {
                logger.info("导入帖子数据失败!!!" + execute.getJsonString());
                return Boolean.FALSE;
            }
            logger.info("导入索引indexName:{}数据成功!!!", indexName.toLowerCase());
            return Boolean.TRUE;

二、Jest的操作

使用Jest来操作ElasticSearch具体来说,还是很方便的,只需要很简单的几行API,就可以实现对ES底层很好的封装,省去很多麻烦。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值