簡體   English   中英

如何使用Python從MySQL配置和運行Solr完整數據導入?

[英]How to configure and run Solr full dataimport from MySQL using Python?

我需要使用python和mysql以編程方式執行完全導入或增量導入。 我知道java中的過程。 我們可以通過以下方式做到這一點:

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中建議等效代碼嗎?

您通過發出單個HTTP請求來觸發DataImportHandler,而Java示例只是使用SolrJ包進行此操作的一種方式。

在本機python3中,您可以使用urllib.request來做到這一點:

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

在python2中,在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')

有一些python API,但是我使用mysolr( http://mysolr.readthedocs.io/en/latest/user/userguide.html ),因為您可以在索引中使用json,從而使其更快。

    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索引。 然后在完成后,進行提交。 如果是完整查詢,則可以不提交就清除所有數據,並且在執行最后一次提交后,舊數據將被刪除。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM