MySql からデータをインポートする

トピック作成者:ks-solruserml-bot (2024/07/26 23:01 投稿)
8
CloseClose

(The bot translated the original post https://lists.apache.org/thread/ngf1ryqjro9g4vwr2bdxb1dksdbx04or into Japanese and reposted it under Apache License 2.0. The copyright of posted content is held by the original poster.)

MySqlデータベースからSolr 9.1にデータをインポートする方法を教えてください。

以前はバージョン8.6.2でDIHを使用していました。

よろしくお願いします。

Anuj

返信投稿者:ks-solruserml-bot (2024/07/26 23:01 投稿)

こんにちは、

DIHはSolr 9.xで削除されました。独自のインポーターを作成するか、現在サードパーティとして利用可能なDIH [1] を使用することができます。

よろしくお願いします、
Markus

[1] https://github.com/rohitbemax/dataimporthandler

返信投稿者:ks-solruserml-bot (2024/07/26 23:01 投稿)

私はサードパーティのDIHが維持されていないと思います。

他のオプションとしては、ManifoldCFやApache NiFiのような他のサードパーティフレームワークを使用することです。これらはより視覚的なアプローチです。個人的には、小さなPythonプログラムを書くと思います。

ChatGPTにそのようなプログラムをスケッチするように依頼したところ、以下のようなものが得られました :)

以下は、MySQLデータベースからデータをインポートし、Solrにインデックスする方法を示すサンプルPythonプログラムです。SolrPyライブラリを使用しています:

import mysql.connector
from solr import Solr

# MySQLデータベースに接続
cnx = mysql.connector.connect(user='username',
                              password='password',
                              host='hostname',
                              database='database_name')
cursor = cnx.cursor()

# MySQLクエリを実行
query = "SELECT * FROM table_name"
cursor.execute(query)

# データを全て取得
data = cursor.fetchall()

# Solrに接続
solr = Solr('http://localhost:8983/solr/core_name')

# データをSolrにインデックス
for row in data:
    solr.add(row)

# 変更をコミット
solr.commit()

# データベースとSolrの接続を閉じる
cursor.close()
cnx.close()
solr.close()

テストはしていませんが、少し手を加えればうまく動くはずです。

Jan

返信投稿者:ks-solruserml-bot (2024/07/26 23:01 投稿)

そうですね、データベースを読み取れる言語であれば、自分でインデクサを作るのは簡単です。また、サポートされている場合でも、DIH単独では信頼しません。

返信投稿者:ks-solruserml-bot (2024/07/26 23:02 投稿)

更新をバッチで送信できるインデクサを作成してください。それぞれのドキュメントを個別にリクエストするよりも速くなります。

返信投稿者:ks-solruserml-bot (2024/07/26 23:02 投稿)

同意します。全体が完了するまで待つか、途中で失敗するのを心配している場合は1000のようなモジュラス(剰余)を使うのが好きです。コミットの回数は少ないほど良いです。

返信投稿者:ks-solruserml-bot (2024/07/26 23:02 投稿)

それが簡単だとは言えないかもしれませんが、成功させた人はたくさんいます。先に述べたように、バッチ処理は重要です。データの性質によってはフォールトトレランス(障害耐性)も重要です。毎日のデータロードは、継続的なデータフィードとは少し異なります。また、インデックス作成によるサーバー負荷を軽減するために、どの程度データを処理するかにも依存します。データセットのサイズは、パフォーマンスのニーズやスケーラビリティなどに影響を与えることがあります。

-Gus

返信投稿者:ks-solruserml-bot (2024/07/26 23:02 投稿)

それでは、私のような素人に対するアドバイスは何でしょうか?

  1. 組み込みのDIHを使用してSolr 8.xを使う
    または
  2. Solr 9.xでサードパーティのDIHを使用する

私は20以上のコアがあり、毎日cronを通じてMySQLからデータを更新しています。

よろしくお願いします、

Anuj

返信投稿者:ks-solruserml-bot (2024/07/26 23:02 投稿)

データをJSONドキュメントとしてエクスポートし(Googleで調べてください)、それらをcurlでSolrにPOSTしてください(Solrのドキュメントで調べてください)。多くの人はスクリプトでそれを行いますが、シンプルな場合には上記の方法も機能するはずです。

Dima

トピックへ返信するには、ログインが必要です。

KandaSearch

Copyright © 2006-2024 RONDHUIT Co, Ltd. All Rights Reserved.

投稿の削除

この投稿を削除します。よろしいですか?