SolrClient package¶
This is the primary module for interacting with Solr. All other components are accessed through a SolrClient instance. Basic usage:
>>> from SolrClient import SolrClient
>>> solr = SolrClient('http://localhost:8983/solr') #Solr URL
>>> res = solr.query('SolrClient_unittest',{ #Query params are sent as a python dict
'q':'product_name:Lorem',
'facet':True,
'facet.field':'facet_test',
})
>>> res.get_results_count() #Number of items returned
4
>>> res.get_facets() #If you asked for facets it will give you facets as a python dict
{'facet_test': {'ipsum': 0, 'sit': 0, 'dolor': 2, 'amet,': 1, 'Lorem': 1}}
>>> res.docs #Returns documents as a list
[{'product_name_exact': 'orci. Morbi ipsum ullamcorper, quam', '_version_': 15149272615480197 12, 'facet_test': ['dolor'], 'date': '2015-10-13T14:40:20.492Z', 'id': 'cb666bd1-ab8e-4951-98 29-5ccd4c12d10b', 'price': 10, 'product_name': 'ullamcorper, nulla. Vestibulum Lorem orci,'}, {'product_name_exact': 'enim aliquet orci. sapien, mattis,', '_version_': 151492726156689408 0, 'facet_test': ['dolor'], 'date': '2015-10-13T14:40:20.492Z', 'id': '8cb40255-ea07-4ab2-a30 f-6e843781a043', 'price': 22, 'product_name': 'dui. Lorem ullamcorper, lacus. hendrerit'}, {' product_name_exact': 'arcu In Nunc vel Nunc', '_version_': 1514927261568991234, 'facet_test': ['Lorem'], 'date': '2015-10-13T14:40:20.493Z', 'id': '287702d2-90b8-4dce-8e66-00a016e51bdd', 'price': 93, 'product_name': 'ipsum vel. Lorem dui. risus'}, {'product_name_exact': 'Vivamus sem ac dolor neque', '_version_': 1514927261656023040, 'facet_test': ['amet,'], 'date': '201 5-10-13T14:40:20.494Z', 'id': 'f3c396f0-1fc2-4847-a966-1ebe055b8bd7', 'price': 60, 'product_n ame': 'consectetur Mauris dolor Lorem adipiscing'}]
SolrClient.SolrClient module¶
-
class
SolrClient.
SolrClient
(host='http://localhost:8983/solr', transport=<class SolrClient.transport.transportrequests.TransportRequests>, devel=False, auth=None, log=None, **kwargs)¶ Bases:
object
Creates a new SolrClient.
Parameters: - host – Specifies the location of Solr Server. ex ‘http://localhost:8983/solr’. Can also take a list of host values in which case it will use the first server specified, but will switch over to the second one if the first one is not available.
- transport – Transport class to use. So far only requests is supported.
- devel (bool) – Can be turned on during development or debugging for a much greater logging. Requires logging to be configured with DEBUG level.
-
commit
(collection, openSearcher=False, softCommit=False, waitSearcher=True, commit=True, **kwargs)¶ Parameters: Sends a commit to a Solr collection.
-
cursor_query
(collection, query)¶ Parameters: Will page through the result set in increments using cursorMark until it has all items. Sort is required for cursorMark queries, if you don’t specify it, the default is ‘id desc’.
Returns an iterator of SolrResponse objects. For Example:
>>> for res in solr.cursor_query('SolrClient_unittest',{'q':'*:*'}): print(res)
-
delete_doc_by_id
(collection, doc_id, **kwargs)¶ Parameters: Deletes items from Solr based on the ID.
>>> solr.delete_doc_by_id('SolrClient_unittest','changeme')
-
delete_doc_by_query
(collection, query, **kwargs)¶ Parameters: Deletes items from Solr based on a given query.
>>> solr.delete_doc_by_query('SolrClient_unittest','*:*')
-
get
(collection, doc_id, **kwargs)¶ Parameters: Retrieve document from Solr based on the ID.
>>> solr.get('SolrClient_unittest','changeme')
-
get_zk
()¶
-
index
(collection, docs, params=None, min_rf=None, **kwargs)¶ Parameters: - collection (str) – The name of the collection for the request.
- list docs (docs) – List of dicts. ex: [{“title”: “testing solr indexing”, “id”: “test1”}]
- int min_rf (min_rf) – Required number of replicas to write to’
Sends supplied list of dicts to solr for indexing.
>>> docs = [{'id':'changeme','field1':'value1'}, {'id':'changeme1','field2':'value2'}] >>> solr.index('SolrClient_unittest', docs)
-
index_json
(collection, data, params=None, min_rf=None, **kwargs)¶ Parameters: - collection (str) – The name of the collection for the request.
- str data (data) – Valid Solr JSON as a string. ex: ‘[{“title”: “testing solr indexing”, “id”: “test1”}]’
- int min_rf (min_rf) – Required number of replicas to write to’
Sends supplied json to solr for indexing, supplied JSON must be a list of dictionaries.
>>> docs = [{'id':'changeme','field1':'value1'}, {'id':'changeme1','field2':'value2'}] >>> solr.index_json('SolrClient_unittest',json.dumps(docs))
-
local_index
(collection, filename, **kwargs)¶ Parameters: Will index specified file into Solr. The file must be local to the server, this is faster than other indexing options. If the files are already on the servers I suggest you use this. For example:
>>> solr.local_index('SolrClient_unittest', '/local/to/server/temp_file.json')
-
mget
(collection, doc_ids, **kwargs)¶ Parameters: Retrieve documents from Solr based on the ID.
>>> solr.get('SolrClient_unittest','changeme')
-
paging_query
(collection, query, rows=1000, start=0, max_start=200000)¶ Parameters: - collection (str) – The name of the collection for the request.
- query (dict) – Dictionary of solr args.
- rows (int) – Number of rows to return in each batch. Default is 1000.
- start (int) – What position to start with. Default is 0.
- max_start (int) – Once the start will reach this number, the function will stop. Default is 200000.
Will page through the result set in increments of row WITHOUT using cursorMark until it has all items or until max_start is reached. Use max_start to protect your Solr instance if you are not sure how many items you will be getting. The default is 200,000, which is still a bit high.
Returns an iterator of SolrResponse objects. For Example:
>>> for res in solr.paging_query('SolrClient_unittest',{'q':'*:*'}): print(res)
-
query
(collection, query, request_handler='select', **kwargs)¶ Parameters: Sends a query to Solr, returns a SolrResults Object. query should be a dictionary of solr request handler arguments. Example:
res = solr.query('SolrClient_unittest',{ 'q':'*:*', 'facet':True, 'facet.field':'facet_test', })
-
query_raw
(collection, query, request_handler='select', **kwargs)¶ Parameters: Sends a query to Solr, returns a dict. query should be a dictionary of solr request handler arguments. Example:
res = solr.query_raw('SolrClient_unittest',{ 'q':'*:*', 'facet':True, 'facet.field':'facet_test', })
-
stream_file
(collection, filename, **kwargs)¶ Parameters: Will open the json file, uncompressing it if necessary, and submit it to specified solr collection for indexing.
>>> solr.local_index('SolrClient_unittest', '/local/to/script/temp_file.json')