2017-01-03 10 views
0

pythonとmysqlを使って、完全にインポートまたはデルタインポートをプログラムで実行する必要があります。私はjavaのプロセスを認識しています。Pythonを使ってMySQLからSolrの完全なデータ・インポートを設定して実行するには?

CommonsHttpSolrServer server = new CommonsHttpSolrServer("http://localhost:8983/solr"); 
ModifiableSolrParams params = new ModifiableSolrParams(); 
params.set("command", "full-import"); 
QueryRequest request = new QueryRequest(params); 
request.setPath("/dataimport"); 
server.request(request); 

私はこれをPythonで実装しようとしています。あなたはこれをサポートするpythonまたは任意のsolr python apiで同等のコードを提案できますか?

答えて

0

DataImportHandlerは単一のHTTP要求をトリガーして起動します。Javaの例は、SolrJパッケージを使用してそれを行う方法に過ぎません。

あなたが urllib.requestを使用してこれを行うことができますネイティブのpython3で

:python2同じ機能で

import urllib.request 
urllib.request.urlopen('http://localhost:8983/solr/collection/dataimport?command=full-import') 

urllib2の下で提供されています:

import urllib2 
urllib2.urlopen('http://localhost:8983/solr/collection/dataimport?command=full-import') 

それともrequestsライブラリを使用している場合(これはpip install requestsからインストール可能):

import requests 
requests.get('http://localhost:8983/solr/collection/dataimport?command=full-import') 
+0

私はこれらの方法を知っています。私はsolr 6.3のsolrJに似たPython APIがあるかどうかを知りたかっただけです。私はsunburntで働いていると述べましたが、solr 4.8よりもバージョンgrtrではまったく動作しません。あなたはいくつかの選択肢を提案できますか? –

0

いくつかのPython APIがありますが、インデックス作成にjsonを使用できるため、mysolr(http://mysolr.readthedocs.io/en/latest/user/userguide.html)を使用しています。

from mysolr import Solr 

    ## For full index, delete all data after final commit: 
    solr.delete_by_query('*:*', commit=False) 

    solr = Solr("http://localhost:8983/solr/collection", version=4) 
    documents = [ 
     {'id' : 1, 
     'field1' : 'foo' 
     }, 
     {'id' : 2, 
     'field1' : 'bar' 
     } 
    ] 

    solr.update(documents, 'json', commit=False) 
    solr.commit() 

あなたは、一度に1000のレコードのように照会し、それらのリスト(上記の「ドキュメント」)を作成し、Solrのインデックスに送信することができます。それで終了したら、コミットしてください。完全なクエリの場合は、コミットせずにすべてのデータをクリアすることができ、最後のコミットを行うと古いデータは削除されます。

+0

solr 6.3をサポートしていますか?私はそれを実装しようとしているが、それは動作していない –

+0

より具体的に何が動作していないことができますか? Pythonシェルを使ってテストを行い、エラーメッセージを書き出します。私はsol 5.1を使用しますが、私はsolr 6.3でもそれをテストしました。上記のバージョン= 4は、バージョン3と4の間でsolr APIに変更があったため(オプションは1,3,4)、solr 4を参照しています。 URLの「コレクション」は、コレクションの名前にする必要があります。 –

関連する問題