您的位置:首页 > 其它

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

2018-07-19 11:39 441 查看

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

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

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

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

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

[code]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底层很好的封装,省去很多麻烦。

阅读更多
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: