TMDB数据导入elasticsearch7
目录
1、下载tmdb数据下载地址:TMDB 5000 Movie Dataset | Kaggle
2、下载两个文档(tmdb_5000_credits.csv和tmdb_5000_movies.csv)
3、项目POM文件
4、导入ES代码
5、新建ES索引
1、下载tmdb数据
下载地址:TMDB 5000 Movie Dataset | Kaggle
注意:注册账号需要翻墙才可以
2、下载两个文档(tmdb_5000_credits.csv和tmdb_5000_movies.csv)
整合文档将Excel进行整合,将需要的字段整合到move.csv
3、项目POM文件
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.1.6.RELEASE</version><relativePath/> <!-- lookup parent from repository --></parent><groupId>com.imooc</groupId><artifactId>dianping</artifactId><version>0.0.1-SNAPSHOT</version><name>dianping</name><description>dianping spring boot java project</description><properties><java.version>1.8</java.version><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><maven.compiler.source>1.8</maven.compiler.source><maven.compile.target>1.8</maven.compile.target></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-aop</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><dependency><groupId>org.elasticsearch</groupId><artifactId>elasticsearch</artifactId><version>7.3.0</version></dependency><dependency><groupId>org.elasticsearch.client</groupId><artifactId>transport</artifactId><version>7.3.0</version></dependency><dependency><groupId>org.elasticsearch.plugin</groupId><artifactId>transport-netty4-client</artifactId><version>7.3.0</version></dependency><dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.58</version></dependency><dependency><groupId>com.opencsv</groupId><artifactId>opencsv</artifactId><version>4.2</version></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build></project>
4、导入ES代码
package com.imooc.dianping.service.impl;import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.imooc.dianping.service.SellerService;
import com.opencsv.CSVReader;
import org.elasticsearch.action.ActionListener;
import org.elasticsearch.action.bulk.BulkRequest;
import org.elasticsearch.action.bulk.BulkResponse;
import org.elasticsearch.action.index.IndexRequest;
import org.elasticsearch.client.transport.TransportClient;
import org.elasticsearch.common.xcontent.XContentType;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStreamReader;
import java.nio.charset.Charset;
import java.util.List;@Service
public class SellerServiceImpl implements SellerService {@AutowiredTransportClient transportClient;@Overridepublic void importData() {BulkRequest bulkRequest = new BulkRequest();int lineIndex = 0;try {InputStreamReader reader = new InputStreamReader(new FileInputStream("./tmdb_5000_movies.csv"), Charset.forName("UTF-8"));CSVReader csvReader = new CSVReader(reader, ',');//读取CSV文件List<String[]> allReader = csvReader.readAll();for (String[] records :allReader) {lineIndex++;if (lineIndex == 1) {continue;}System.out.println("第"+lineIndex+"行");if(StringUtils.isEmpty(records[20])){continue;}if(records[20].contains("[]")){continue;}JSONArray jsonArray = JSONArray.parseArray(records[20]);//获取文档字段String character = jsonArray.getJSONObject(0).getString("character");String name = jsonArray.getJSONObject(0).getString("name");JSONObject cast = new JSONObject();cast.put("character", character);cast.put("name", name);String date = records[11];if (StringUtils.isEmpty(date)) {date = "1970/01/01";}bulkRequest.add(new IndexRequest("movie", "_doc", String.valueOf(lineIndex)).source(XContentType.JSON,"title", records[17], "tagline", records[16], "release_date", date, "popularity", records[8], "cast", cast, "overview", records[7]));}reader.close();//将数据导入EStransportClient.bulk(bulkRequest, new ActionListener<BulkResponse>() {@Overridepublic void onResponse(BulkResponse bulkItemResponses) {System.out.println(bulkItemResponses);}@Overridepublic void onFailure(Exception e) {}});} catch (FileNotFoundException e) {System.out.println("第---->"+lineIndex+"行");e.printStackTrace();} catch (IOException e) {System.out.println("第---->"+lineIndex+"行");e.printStackTrace();}}
}
5、新建ES索引
PUT /movie
{"settings": {"number_of_shards": 1,"number_of_replicas": 1},"mappings": {"properties": {"title": {"type": "text","analyzer": "english"},"tagline": {"type": "text","analyzer": "english"},"release_date": {"type": "date","format": "8yyyy-MM-dd||yyyy-M-dd||yyyy-MM-d||yyyy-M-d"},"popularity": {"type": "double"},"cast": {"type": "object","properties": {"character": {"type": "text","analyzer": "standard"},"name": {"type": "text","analyzer": "standard"}}},"overview": {"type": "text","analyzer": "english"}}}
}
为了方便导入,源码和文档进行了整合,代码如下
abel/importData
TMDB数据导入elasticsearch7相关推荐
- Datax将Oracle数据导入ElasticSearch7完成教程
网上关于此方面的内容较少,而且比较零散,正好项目中需要对ES7做预研,所以整理出了这篇文章. ElasticSearch版本为7.13.2 分如下几个主题: 1.Datax的es导入插件elastic ...
- MySQL数据库数据导入ES中
需要安装 mysql数据导入ES中,用到的有logstash,ES,mysql的连接包.链接:https://pan.baidu.com/s/1xopMMUtPir12zrQfYcwBZg 提取码: ...
- Python:数据导入、爬虫:csv,excel,sql,html,txt
''' 来源:天善智能韦玮老师课堂笔记 作者:Dust 数据导入 ·导入csv数据csv是一种常见的数据存储格式,基本上我们遇到的数据都可以转为这种存储格式.在Python数据分析中,我们可以使用pa ...
- matlab在曲线给命名,matlab 利用xlsread画图,怎么将一组excel数据导入,通过matlab作图...
Matlab 循环 for 语句 xlsread EXCEL表格数据导入 画图 Matlab的 xlsread() 函数可以将Excel数据到matlab工作空间,然后就可以根据读入据作图.下面给出操 ...
- Rocksdb 通过ingestfile 来支持高效的离线数据导入
文章目录 前言 使用方式 实现原理 总结 前言 很多时候,我们使用数据库时会有离线向数据库导入数据的需求.比如大量用户在本地的一些离线数据,想要将这一些数据导入到已有的数据库中:或者说NewSQL场景 ...
- sql server 2008数据导入Oracle方法
试了几种sql server数据导入Oracle的方法,发现还是sql server 的导入导出工具最好使.使用方法很简单,照着向导做就可以.不过使用中需要注意以下几点: 系统盘需要足够大.因为SSI ...
- 将excel中是数据导入数据库
2019独角兽企业重金招聘Python工程师标准>>> 将excel中是数据导入数据库 1.利用excel生成sql语句: 列如: 1).insert: =CONCATENATE(& ...
- eplise怎么连接数据库_基于手机信令的大数据分析教程(一)数据导入数据库
前言 该套教程以一个初学大数据的菜鸟视角,编写数据分析处理的整套流程.写得较为详(luo)细(suo),希望适用于任何城乡规划大数据的初学者.持续更新中,若有错误,望指正! 1.任务总纲 (1)职住数 ...
- SQLServer怎样把本地数据导入到远程服务器上(转载)
平常用到mssql时间比较少,总是过一段时间就忘记应该怎么操作了.当要做mssq把本地数据导入到远程服务器的时候,就去网上搜索很久都没有图解的,所以今天自己收集一下免得下次又到处去找.希望对自己,同时 ...
- c#直接调用ssis包实现Sql Server的数据导入功能
调用ssis包实现Sql Server的数据导入功能网上已经有很多人讨论过,自己参考后也动手实现了一下,上一次笔者的项目中还用了一下这个功能.思前想后,决定还是贴一下增强记忆,高手请54. 1.直接调 ...
最新文章
- php视频录制插件,Chrome浏览器录屏扩展插件
- #65279导致页面顶部空白一行解决方法
- 深度学习保姆级入门教程 -- 论文+代码+常用工具
- select count(*) from返回的类型_数据分析面试题类型汇总
- 计算机专业审核作业指导书,专业审核作业指导书
- linux命令行改变时区,Linux命令行操作修改系统时区
- Raki的PRML阅读笔记 第1章:Introduction
- win10 linux声音,win10电脑突然没有声音的10种修复方法
- C语言中sprintf()函数的用法
- PostgreSQL视图和物化视图
- 如何使用 JS 实现带字母的导航城市列表,以及城市搜索
- 有了这些好看的流程图模板,你也可以画出漂亮的流程图
- 魔法门之英雄无敌3 android,魔法门之英雄无敌3 v0.86.04
- 关于读书的名人名言,让你体会读书的好处有哪些
- Linux 如何设置当前时间
- RRPP相切环配置示例
- Spring 夺命 35 问!
- 机器学习从零到入门 集成学习
- 2020央视元宵晚会 | 《你的样子》朗诵词
- Kernel源码笔记之调度:4.Fork系统调用