Đồng bộ SQL Server sang Elasticsearch


Hướng dẫn chuyển dữ liệu từ SQL Server sang Elasticsearch bằng  plugin JDBC Elasticsearch. Mặc định plugin này đã hỗ trợ My SQL


Mô hình ứng dụng của ElasticSearch

Mô hình ứng dụng của ElasticSearch

  • Người dùng chỉ truy cập trên dữ liệu của ElasticSearch
  • Người quản trị thì truy cập trực tiếp trên Database SQL (MySQL) để cập nhật thêm xóa sửa và nó tự động cập nhật sang ElasticSearch

1. Cài đặt ElasticSearch

2. Cài đặt SQL Server và cấu hình

Đang sử dụng MS SQL 2012 và AdventureWorks2012 làm cơ sở dữ liệu mẫu. Bạn hãy chắc chắn rằng MS SQL Server của bạn cho phép xác thực SQL.

Cài đặt SQL Server và cấu hình

Mở SQL Server Configuration Manager để kích hoạt TCP/IP. Đường dẫn của nó là C:\Windows\SysWOW64\SQLServerManager11.msc đây là phiên bản SQL Server 2012, ở phiên bản SQL 2016 là C:\Windows\SysWOW64\SQLServerManager13.msc. Như vậy có thể đoán ra phiên bản SQL 2014 sẽ là C:\Windows\SysWOW64\SQLServerManager12.msc

sql server configuration manager

Thiết lập cổng cho phép kết nối tới SQL Server ở đây để cổng ví dụ là 25488

Thiết lập cổng cho phép kết nối tới SQL Server

Bạn hãy restart service SQL Server

3. Cài đặt và cấu hình Elasticsearch – Plugin JDBC

Hiện tại chúng ta đã cài đặt và cấu hình cho Elasticsearch và MS SQL Server. Chúng ta sẽ kết nối chúng với nhau thông qua plugin JDBC cho Elasticsearch. Truy cập kho JDBC và nhận phiên bản mới nhất http://xbib.org/repository/org/xbib/elasticsearch/importer/elasticsearch-jdbc/

Giải nén tệp .zip vào thư mục bin của Elasticsearch

Giải nén tệp .zip vào thư mục bin của Elasticsearch

JDBC hiện tại hỗ trợ My SQL để làm cho JDBC làm việc với MS SQL server, bạn cần MS SQL Driver cho nó. Bạn có thể trình điều khiển tại liên kết sau Microsoft JDBC Drivers 6.0, 4.2, 4.1, and 4.0 for SQL Server

Giải nén thư mục cài đặt và sao chép các tập tin của trình điều khiển vào thư mục lib của plugin JDBC.

Microsoft JDBC Drivers 6.0, 4.2, 4.1, and 4.0 for SQL Server

4. Cấu hình để Index data từ SQL sang Elasticsearch

Bây giờ bạn đã cài đặt mọi thứ cần thiết. Điều cuối cùng thật hiện là tạo file đoạn script để đồng bộ dữ liệu từ MS SQL sang Elasticsearch. Trong thư mục bin của JDBC, tạo một tập tin mssql-simple-example.bat với nội dung như sau

@echo off

set DIR=%~dp0
set LIB=%DIR%..\lib\*
set BIN=%DIR%..\bin

REM ???
echo {^
    "type" : "jdbc",^
    "jdbc" : {^
        "url" : "jdbc:sqlserver://localhost:25488;instanceName=.;databaseName=AdventureWorks2014",^
        "user" : "sa",^
        "password" : "mastercode.vn",^
        "sql" :  "SELECT BusinessEntityID as _id, BusinessEntityID, Title, FirstName, MiddleName, LastName FROM Person.Person",^
        "treat_binary_as_string" : true,^
        "elasticsearch" : {^
             "cluster" : "elasticsearch",^
             "host" : "localhost",^
             "port" : 9300^
        },^
        "index" : "person",^
		"type"	:	"person"^
      }^
}^ | "%JAVA_HOME%\bin\java" -cp "%LIB%" -Dlog4j.configurationFile="%BIN%\log4j2.xml" "org.xbib.tools.Runner" "org.xbib.tools.JDBCImporter"

Bạn chú ý đến thông số phù hợp với cấu hình của bạn:

  • url: chuỗi kết nối
  • user: tài khoản có quyền đăng nhập và truy vấn trên database đó
  • password: là mật khẩu của tài khoản trên
  • sql: đoạn sql thực thi

5. Kiểm tra dữ liệu và tìm kiếm trên Elasticsearch

Bây giờ hãy chạy tập lệnh mssql-simple-example.bat ở trên. Sau khi hoàn tất mọi thứ (nghĩa là máy chủ Elasticsearch bắt đầu và kết thúc tập lệnh chỉ mục). Khởi chạy trình duyệt của bạn, hãy thử thực hiện tìm kiếm đơn giản http://localhost:9200/_search?q=a

Kiểm tra dữ liệu và tìm kiếm trên Elasticsearch

Như vậy là xong phần kết nối MS SQL và chuyển dữ liệu sang Elasticsearch

Chia sẽ bài viết :