win环境下把MySql中的数据导入到Elasticsearch(一)

为了解决项目中MySQL查询速度慢的问题,采用Elasticsearch作为搜索解决方案。本文档概述了从MySQL到Elasticsearch的基本数据导入步骤,包括安装MySQL、Elasticsearch、Logstash和logstash-input-jdbc插件,以及解决配置过程中遇到的错误。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

项目需要查询专利功能,原有的MySql查询速度太慢了,甲方提出修改,于是想到用最近很火爆的Elasticsearch作为搜索的支持,但百万级的专利文本作为测试集存在MySql中,因此现在尝试导入。本篇介绍基本配置插入,下一篇介绍Mysql插入。

1.首先先安装Mysql和elasticsearch

2.安装logstash和logstash-input-jdbc插件

下载https://www.elastic.co/downloads/logstash 选zip

解压logstash

进入bin目录,新建文件 logstash_default.conf

input {

stdin{

}

}

 

output {

stdout{

}

}

 

4 在bin目录,新文件文件  run_default.bat

logstash -f logstash_default.conf

 

5 启动 run_default.bat

输入命令行:logstash -f logstash_default.conf

 

这时报错:no implicit conversion from nil to integer

因为路径里有中文,换个英文路径就好了

为了实现将 MySQL 数据中的数据导入到 Elasticsearch,可以使用 Spring Boot 框架结合 Spring Data JPA 和 Spring Data Elasticsearch 来完成。以下是详细的实现步骤和配置说明: ### 3.1 添加必要的依赖 首先,在 `pom.xml` 文件中添加以下 Maven 依赖项,以支持 MySQL、Spring Data JPA 和 Elasticsearch 的整合: ```xml <dependencies> <!-- MySQL数据库驱动 --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <scope>runtime</scope> </dependency> <!-- Spring Data JPA --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency> <!-- Spring Data Elasticsearch --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-elasticsearch</artifactId> </dependency> </dependencies> ``` ### 3.2 配置 MySQLElasticsearch 连接信息 在 `application.properties` 文件中添加以下配置,以设置 MySQLElasticsearch 的连接参数: ```properties #--------------------------------------- # MySQL 数据库配置 #--------------------------------------- spring.datasource.url=jdbc:mysql://localhost:3306/your_database?useSSL=false&serverTimezone=UTC spring.datasource.username=root spring.datasource.password=your_password spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver #--------------------------------------- # Elasticsearch 配置 #--------------------------------------- spring.data.elasticsearch.cluster-nodes=localhost:9200 spring.data.elasticsearch.cluster-name=your-elasticsearch-cluster ``` ### 3.3 创建实体类 创建个与 MySQL 数据库表对应的实体类。例如,假设有个名为 `User` 的表,可以创建如下实体类: ```java import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; @Entity public class User { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; private String name; private String email; // Getters and Setters } ``` ### 3.4 创建 Repository 接口 创建个用于访问 MySQL 数据的 Repository 接口,例如 `UserRepository`: ```java import org.springframework.data.jpa.repository.JpaRepository; public interface UserRepository extends JpaRepository<User, Long> { } ``` 同样,创建个用于操作 Elasticsearch 的 Repository 接口,例如 `UserElasticsearchRepository`: ```java import org.springframework.data.elasticsearch.repository.ElasticsearchRepository; public interface UserElasticsearchRepository extends ElasticsearchRepository<User, Long> { } ``` ### 3.5 实现数据同步逻辑 创建个服务类,用于从 MySQL 中读取数据并将其写入 Elasticsearch。例如,`UserService` 类可以如下所示: ```java import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.List; @Service public class UserService { @Autowired private UserRepository userRepository; @Autowired private UserElasticsearchRepository userElasticsearchRepository; public void syncDataFromMySQLToElasticsearch() { List<User> users = userRepository.findAll(); userElasticsearchRepository.saveAll(users); } } ``` ### 3.6 创建控制器 创建个控制器类,用于触发数据同步操作。例如,`UserController` 类可以如下所示: ```java import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @RestController @RequestMapping("/api") public class UserController { @Autowired private UserService userService; @GetMapping("/sync") public String syncData() { userService.syncDataFromMySQLToElasticsearch(); return "Data synchronized successfully!"; } } ``` ### 3.7 启动应用并测试 启动 Spring Boot 应用,并通过访问 `/api/sync` 端点来触发数据同步操作。这将从 MySQL 数据库中读取所有用户数据,并将其导入到 Elasticsearch 中。 ###
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值