如何使用Python从MySQL配置和运行Solr full dataimport?

时间:2017-01-03 10:23:59

标签: python mysql solr

我需要使用python和mysql以编程方式执行完全导入或delta导入。我知道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中建议等效的代码吗?

2 个答案:

答案 0 :(得分:0)

通过发出单个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')

答案 1 :(得分:0)

有一些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索引。然后完成后,执行提交。如果是完整查询,则可以在不提交的情况下清除所有数据,并且一旦完成最终提交,旧数据将被删除。