Globus Search¶
-
class
globus_sdk.SearchClient(authorizer=None, **kwargs)[source]¶ Bases:
globus_sdk.base.BaseClientClient for the Globus Search API
This class provides helper methods for most common resources in the API, and basic
get,put,post, anddeletemethods from the base client that can be used to access any API resource.- Parameters:
authorizer (
GlobusAuthorizer) – An authorizer instance used for all calls to Globus Search
Methods
Methods
-
get_index(index_id, **params)[source]¶ GET /v1/index/<index_id>Examples
>>> sc = globus_sdk.SearchClient(...) >>> index = sc.get_index(index_id) >>> assert index['index_id'] == index_id >>> print(index["display_name"], >>> "(" + index_id + "):", >>> index["description"])
External Documentation
See Get Index Metadata in the API documentation for details.
-
search(index_id, q, offset=0, limit=10, query_template=None, advanced=False, **params)[source]¶ GET /v1/index/<index_id>/searchExamples
>>> sc = globus_sdk.SearchClient(...) >>> result = sc.search(index_id, 'query string') >>> advanced_result = sc.search(index_id, 'author: "Ada Lovelace"', >>> advanced=True)
External Documentation
See GET Search Query in the API documentation for details.
-
post_search(index_id, data)[source]¶ POST /v1/index/<index_id>/searchExamples
>>> sc = globus_sdk.SearchClient(...) >>> query_data = { >>> "@datatype": "GSearchRequest", >>> "q": "user query", >>> "filters": [ >>> { >>> "type": "range", >>> "field_name": "path.to.date", >>> "values": [ >>> {"from": "*", >>> "to": "2014-11-07"} >>> ] >>> } >>> ], >>> "facets": [ >>> {"name": "Publication Date", >>> "field_name": "path.to.date", >>> "type": "date_histogram", >>> "date_interval": "year"} >>> ], >>> "sort": [ >>> {"field_name": "path.to.date", >>> "order": "asc"} >>> ] >>> } >>> search_result = sc.post_search(index_id, query_data)
External Documentation
See POST Search Query in the API documentation for details.
-
ingest(index_id, data)[source]¶ POST /v1/index/<index_id>/ingestExamples
>>> sc = globus_sdk.SearchClient(...) >>> ingest_data = { >>> "ingest_type": "GMetaEntry", >>> "ingest_data": { >>> "subject": "https://example.com/foo/bar", >>> "visible_to": ["public"], >>> "content": { >>> "foo/bar": "some val" >>> } >>> } >>> } >>> sc.ingest(index_id, ingest_data)
or with multiple entries at once via a GMetaList:
>>> sc = globus_sdk.SearchClient(...) >>> ingest_data = { >>> "ingest_type": "GMetaList", >>> "ingest_data": { >>> "gmeta": [ >>> { >>> "subject": "https://example.com/foo/bar", >>> "visible_to": ["public"], >>> "content": { >>> "foo/bar": "some val" >>> } >>> }, >>> { >>> "subject": "https://example.com/foo/bar", >>> "id": "otherentry", >>> "visible_to": ["public"], >>> "content": { >>> "foo/bar": "some otherval" >>> } >>> } >>> ] >>> } >>> } >>> sc.ingest(index_id, ingest_data)
External Documentation
See Ingest in the API documentation for details.
-
delete_by_query(index_id, data)[source]¶ POST /v1/index/<index_id>/delete_by_queryExamples
>>> sc = globus_sdk.SearchClient(...) >>> query_data = { >>> "q": "user query", >>> "filters": [ >>> { >>> "type": "range", >>> "field_name": "path.to.date", >>> "values": [ >>> {"from": "*", >>> "to": "2014-11-07"} >>> ] >>> } >>> ] >>> } >>> sc.delete_by_query(index_id, query_data)
External Documentation
See Delete By Query in the API documentation for details.
-
get_subject(index_id, subject, **params)[source]¶ GET /v1/index/<index_id>/subjectExamples
Fetch the data for subject
http://example.com/abcfrom indexindex_id:>>> sc = globus_sdk.SearchClient(...) >>> subject_data = sc.get_subject(index_id, 'http://example.com/abc')
External Documentation
See Get Subject in the API documentation for details.
-
delete_subject(index_id, subject, **params)[source]¶ DELETE /v1/index/<index_id>/subjectExamples
Delete all data for subject
http://example.com/abcfrom indexindex_id, even data which is not visible to the current user:>>> sc = globus_sdk.SearchClient(...) >>> subject_data = sc.get_subject(index_id, 'http://example.com/abc')
External Documentation
See Delete Subject in the API documentation for details.
-
get_entry(index_id, subject, entry_id=None, **params)[source]¶ GET /v1/index/<index_id>/entryExamples
Lookup the entry with a subject of
https://example.com/foo/barand a null entry_id:>>> sc = globus_sdk.SearchClient(...) >>> entry_data = sc.get_entry(index_id, 'http://example.com/foo/bar')
Lookup the entry with a subject of
https://example.com/foo/barand an entry_id offoo/bar:>>> sc = globus_sdk.SearchClient(...) >>> entry_data = sc.get_entry(index_id, 'http://example.com/foo/bar', >>> entry_id='foo/bar')
External Documentation
See Get Entry in the API documentation for details.
-
create_entry(index_id, data)[source]¶ POST /v1/index/<index_id>/entryExamples
Create an entry with a subject of
https://example.com/foo/barand a null entry_id:>>> sc = globus_sdk.SearchClient(...) >>> sc.create_entry(index_id, { >>> "subject": "https://example.com/foo/bar", >>> "visible_to": ["public"], >>> "content": { >>> "foo/bar": "some val" >>> } >>> })
Create an entry with a subject of
https://example.com/foo/barand an entry_id offoo/bar:>>> sc = globus_sdk.SearchClient(...) >>> sc.create_entry(index_id, { >>> "subject": "https://example.com/foo/bar", >>> "visible_to": ["public"], >>> "id": "foo/bar", >>> "content": { >>> "foo/bar": "some val" >>> } >>> })
External Documentation
See Create Entry in the API documentation for details.
-
update_entry(index_id, data)[source]¶ PUT /v1/index/<index_id>/entryExamples
Update an entry with a subject of
https://example.com/foo/barand a null entry_id:>>> sc = globus_sdk.SearchClient(...) >>> sc.update_entry(index_id, { >>> "subject": "https://example.com/foo/bar", >>> "visible_to": ["public"], >>> "content": { >>> "foo/bar": "some val" >>> } >>> })
External Documentation
See Update Entry in the API documentation for details.
-
delete_entry(index_id, subject, entry_id=None, **params)[source]¶ DELETE /v1/index/<index_id>/entryExamples
Delete an entry with a subject of
https://example.com/foo/barand a null entry_id:>>> sc = globus_sdk.SearchClient(...) >>> sc.delete_entry(index_id, "https://example.com/foo/bar")
Delete an entry with a subject of
https://example.com/foo/barand an entry_id of “foo/bar”:>>> sc = globus_sdk.SearchClient(...) >>> sc.delete_entry(index_id, "https://example.com/foo/bar", >>> entry_id="foo/bar")
External Documentation
See Delete Entry in the API documentation for details.
-
get_query_template(index_id, template_name)[source]¶ GET /v1/index/<index_id>/query_template/<template_name>External Documentation
See Get Query Template in the API documentation for details.
-
get_query_template_list(index_id)[source]¶ GET /v1/index/<index_id>/query_templateExternal Documentation
See Get Query Template List in the API documentation for details.
Helper Objects¶
-
class
globus_sdk.SearchQuery[source]¶ Bases:
dictA specialized dict which has helpers for creating and modifying a Search Query document.
Example usage:
>>> from globus_sdk import SearchClient, SearchQuery >>> sc = SearchClient(...) >>> index_id = ... >>> query = (SearchQuery(q='example query') >>> .set_limit(100).set_offset(10) >>> .add_filter('path.to.field1', ['foo', 'bar'])) >>> result = sc.post_search(index_id, query)
Client Errors¶
When an error occurs, a SearchClient will raise this specialized type of
error, rather than a generic GlobusAPIError.
-
class
globus_sdk.exc.SearchAPIError(r)[source]¶ Bases:
globus_sdk.exc.GlobusAPIErrorError class for the Search API client. In addition to the inherited
codeandmessageinstance variables, provides:- Variables:
error_data – Additional object returned in the error response. May be a dict, list, or None.