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

2024-09-28 05:23:50 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要使用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中的等效代码吗?在


Tags: httpnewserver过程request编程方式mysql
2条回答

您可以通过发出一个HTTP请求来触发DataImportHandler,而Java示例只是使用SolrJ包实现这一点的一种方法。在

在原生python3中,您可以使用urllib.request来完成此操作:

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

在python2中,urllib2下有相同的函数:

^{pr2}$

或者,如果您正在使用requests库(可以通过pip install requests安装):

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

有一些pythonapi,但是我使用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索引。完成后,再提交。如果是完整查询,则可以在不提交的情况下清除所有数据,并且在完成最后一次提交后,旧数据将被删除。在

相关问题 更多 >

    热门问题