您现在的位置是:首页 >其他 >3分钟快速了解mysql数据导入到es网站首页其他

3分钟快速了解mysql数据导入到es

ascarl2010 2023-07-02 00:00:03
简介3分钟快速了解mysql数据导入到es

可以将 MySQL 中的表数据导入 Elasticsearch 中,并使用中文分词器。在这个例子中,我们将使用 Logstash(一个数据处理管道工具)将 MySQL 中的数据导入 Elasticsearch。假设您已经安装了 Elasticsearch、Logstash 和 MySQL。

  1. 首先,为了使用中文分词器,您需要安装一个 Elasticsearch 插件,如 analysis-ik。在 Elasticsearch 安装目录下执行以下命令来安装该插件:
./bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.15.0/elasticsearch-analysis-ik-7.15.0.zip
  1. 重启 Elasticsearch 以使插件生效。

  2. 在 Elasticsearch 中创建一个索引,使用中文分词器:

curl -X PUT "localhost:9200/books?pretty" -H 'Content-Type: application/json' -d'
{
  "settings": {
    "analysis": {
      "analyzer": {
        "ik_smart": {
          "type": "custom",
          "tokenizer": "ik_smart"
        }
      }
    }
  },
  "mappings": {
    "properties": {
      "title": {
        "type": "text",
        "analyzer": "ik_smart"
      },
      "author": { "type": "keyword" },
      "publish_date": { "type": "date" },
      "category": { "type": "keyword" }
    }
  }
}'
  1. 在 MySQL 数据库中创建一个名为 books 的表,并插入一些书籍数据:
CREATE TABLE books (
  id INT AUTO_INCREMENT PRIMARY KEY,
  title VARCHAR(255),
  author VARCHAR(255),
  publish_date DATE,
  category VARCHAR(255)
);

INSERT INTO books (title, author, publish_date, category)
VALUES
  ('活着', '余华', '1992-01-01', '小说'),
  ('百年孤独', '加西亚·马尔克斯', '1967-05-30', '小说'),
  ('人类简史', '尤瓦尔·赫拉利', '2011-01-01', '历史');
  1. 在 Logstash 安装目录下,创建一个名为 mysql_to_es.conf 的配置文件,内容如下:
input {
  jdbc {
    jdbc_driver_library => "/path/to/mysql-connector-java.jar"
    jdbc_driver_class => "com.mysql.cj.jdbc.Driver"
    jdbc_connection_string => "jdbc:mysql://localhost:3306/your_database?serverTimezone=UTC"
    jdbc_user => "your_username"
    jdbc_password => "your_password"
    schedule => "* * * * *"
    statement => "SELECT * FROM books"
  }
}

output {
  elasticsearch {
    hosts => "localhost:9200"
    index => "books"
    document_id => "%{id}"
  }
}

请替换 /path/to/mysql-connector-java.jar 为 MySQL JDBC 驱动的路径,your_database 为您的数据库名,your_usernameyour_password 为您的 MySQL 用户名和密码。

  1. 使用 Logstash 运行刚刚创建的配置文件:
./bin/logstash -f mysql_to_es.conf
  1. 查看 Elasticsearch 中的数据是否正确导入:
curl -X GET "localhost:9200/books/_search?pretty"

您应该会看到包含导入的书籍数据的 JSON 响应。

在这个例子中,我们使用了 Logstash 将 MySQL 中的数据导入到 Elasticsearch 中,并使用中文分词器对 title 字段进行了分词。注意,在生产环境中,您需要谨慎处理敏感数据,并遵循适当的数据保护措施。

可以在运行中的 MySQL 服务上执行数据导入操作。Logstash 将会建立与 MySQL 数据库的连接,并从中读取数据,不会影响 MySQL 的正常运行。但是,如果您在 MySQL 表上执行写操作(如插入、更新、删除),则需要确保 Logstash 配置文件中的查询语句不会受到影响,否则可能导致数据不一致。

风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。