Public release notes for all versions of Globus Search.


  • Fix @context expansion on ingest tasks to restore correct behavior


  • Timeout errors were incorrectly classified as 502. This is corrected and they are now returned as HTTP 504 errors

  • Certain range filters were mishandled and resulted in errors

  • Histogram bucketing facets on text-type fields now produces a better error

  • Major documentation refresh

  • Add the new Task API which supports getting a task and a list of tasks

    • /v1/task/<task_id> gets a current Task document. To make this call, you must have permissions to ingest data into the index which is referred to by the task

    • /v1/task_list/<index_id> gets a list of the 1000 most recent Tasks which were started against an index

  • The Ingest API no longer attempts to synchronously write data to an index, but returns a task_id handle for the asynchronous background task

    • Clients which depended on the num_documents_ingested field on ingest will now find that it always has a value of 0

    • A successful return from an ingest API call no longer guarantees that data was written to the index successfully — callers must now check the status of the generated Task using the new Task API


  • NaN, Infinity, and -Infinity are now rejected with an informative 400-class error, as they cannot be stored in Globus Search as Float values

  • Error documents now include the request_id for better troubleshooting. Please include the request_id when reporting unexpected errors


  • Internal stability improvements


  • Internal stability improvements


  • Numeric histograms with bad ranges correctly result in 400 errors

  • Handle malformed dates which failed parsing


  • Fix Group membership checks to include full identity set

  • Unauthed use of restricted APIs no longer produces (incorrect) 403s, but 401s instead

  • Index Locking. When data is being reindexed by Search (e.g. because of a requested update to schema information), the index will now enter a Locked state.

    • Previously, writes were allowed but had a risk of being discarded by the reindex operation.

    • While an index is Locked, attempts to write to it will return 409 Conflict Errors. Any impacted operations have had their documentation pages updated.

  • Unicode-aware Sorting. Sorts on text fields containing non-ascii characters should now better reflect typical character orderings.

    • This supports all unicode text fields.

    • There are known cases where language-agnostic unicode sorting differs from typical phonebook ordering for a specific language. These are not bugs in Search.


  • In certain situations, Index IDs were not being treated equivalently to Index Names for permissions checks. Using Index IDs should now work correctly for APIs which incorrectly returned 403 errors.


  • Add support for Delete-by-Query operations

    • Delete-by-Query requires admin privileges

    • This operation can delete documents which are not visible to the caller, so it should be used with great care. Please read the documentation carefully before using

  • All indices are now reachable using their Index ID value in place of the <index_name> — this is now the preferred method of reaching an index

    • All operations will continue to work normally with the current index_name values

    • Simply GET /v1/index/<index_name> and look at the resulting Index ID value to get the ID of an index for which you know the name. At the bottom of these notes, we provide an example of doing this

    • In a future version, we plan to remove the uniqueness constraint on index_name and make it an editable display name field for indices. At that time it will cease to be possible to resolve an index_name to an index_id value

  • A new namespace has been added to Globus Search under /unstable/ (as opposed to /v1/). Such APIs will not be included in our documentation or release notes, and may change without warning. They are for internal use only.


  • Improvements to search processing speed


  • Fix the advanced query parsing’s handling of spaces in parenthesized expressions. The bugfix in v1.0.0 introduced failures on expressions like foo ( bar) and (foo ) bar. These should now parse correctly


  • Fix the advanced query parsing’s handling of operators applied to parenthesized expressions. Expressions like foo (bar baz)^2 should now parse correctly


  • Fix the handling of operators inside of field values in advanced query parsing. Expressions like foo:(bar && baz) should now parse correctly

  • Enforce size limits on indices — each index is now limited to a total size

    • If your quota is too low, please contact us about raising it

    • All current indices should be well within their quotas

    • If you fill your quota, you may notice that your usage may mildly exceed your stated quota. This is not a bug. Search can’t accurately evaluate the storage cost of documents until they are stored, so quota enforcement is done by checking if you have exceeded your quota.

  • Add an API endpoint for getting data about indices, including their current quota and usage

    • This is a simple GET call which returns a GSearchIndex document


Breaking Changes
  • GMetaEntry.visible_to is now required to only contain "public" or Principal URNs

    • Other values will cause 400 BadRequest errors due to a malformed document

  • Users are no longer prevented from writing/deleting one another’s GMetaEntry documents

    • If two users, Bob and Alice, both ingest GMetaEntry documents with the same subject and id values (missing or null values included), the last write will win! Only one document will be created. Previously, one document would be created for each user

  • values may no longer contain the character !. We have plans to give this character special meaning in the future, and are considering it a reserved character in this specific context henceforth


Breaking Changes
  • No longer works with datasearch-client versions 0.1.0 and lower. Please ensure that if you are using the search-client, you are using v0.2.0 of that library.

    • The search-client was renamed in v0.2.0 from datasearch-client, which is why both names are written here.

Note:The versions of search-client do not, and are not meant to, match the versions of the Search API. Any similarities in version numbers are purely incidental.
  • Drop support for calls to +/v1/<index_name>/*+. Calls to index-oriented APIs (Query, Ingest, Entry Operations) must always be written as +/v1/index/<index_name>/*+. This was the preferred convention referred to in v0.2.0

  • Support for the scope, deprecated in v0.2.0, is being dropped.

  • Sorting and Faceting on long field contents now works

    • We have repaired a bug regarding support for long field values. This applies to the contents of single fields, not the depth or length of their field names. i.e. In the document {"a": "b"}, this refers to "b".

    • Values longer than 10000 characters will not be included in Facet results. They are also considered "last" by Sorting, regardless of their "true" sort ordering.

  • New Preferred Syntax for visible_to. Values in visible_to other than "public" should now be qualified in the Principal URN format.

    • Existing visible_to entries have been upgraded, so you do not need to reindex your data.

  • Begin renaming resource_type to query_template. We feel this name more accurately represents the meaning/usage of this parameter. The current changes are carefully kept backwards compatible, but we recommend transitioning all usage to the newer forms.

    • Add new parameter, query_template which is a rename of resource_type to GET /v1/<index_name>/search. We recommend starting to use query_template for GET-style searches, as resource_type will be dropped in an upcoming release

    • Add a new @version for GSearchRequest documents, 2017-09-01. We intend to drop support for the 2016-11-09 versioned documents in a future release

    • GSearchRequest version 2017-09-01 takes query_template as an attribute, in lieu of resource_type

    • Unversioned GSearchRequest documents currently are treated as version 2016-11-09. We will change this in a future release

  • Add a new APIs for fetching Query Templates These are unauthenticated; query template contents are considered publicly readable.

    • GET /index/<index_name>/query_template/<template_name> can be used to lookup an existing query template.

    • GET /index/<index_name>/query_template can be used to get a list of query templates associated with an index.

  • Numerous enhancements to error output for debugging purposes

  • Internal robustness and stability improvements


Breaking Changes
  • Drop support for calls to /v1/search and /v1/ingest. Calls now must always be qualified with a relevant index name. The preferred new form is /v1/index/<index_name>/search and /v1/index/<index_name>/ingest.

  • A number of conditions which caused malformed advanced-mode queries to trigger 500-class errors now produce (more correct) 400-class errors

  • Advanced mode queries now require that the following characters be escaped with a preceding \ character in fieldnames: .:+-()*\/ Additionally, spaces must be backslash-escaped

  • Any documents specifying a fieldname for use must escape any dots contained in the fieldname. No other special characters should be escaped, ONLY .. This applies to GBoost, GFacet, GFilter, GSort

  • Advanced mode queries support the use of . as a path separator. Given the document

  "a": {
    "b": 1
  "a.b": 2

we take a.b to refer to the value 1, and a\.b to refer to the value 2.

  • Documents specifying fieldnames can use . as a path separator, with the same meaning as in advanced queries

  • Add sorting functionality to structured queries, using the new GSort document type within the GSearchRequest document.

  • Add new Entry Operations APIs and Subject Operations APIs

    • Includes support for deletion of metadata, requiring only that you are allowed to index data — no new permissions control these operations yet

  • Fieldnames are no longer required to be URIs. Any JSON document is now a valid GMetaContent document

  • Add new documentation pages, which we will be updating regularly

  • Add support for new scope names,,,

    • The ...:search scope can only be used for Searches — not for Ingesting data or the new entry and subject operations

    • The ...:ingest scope can only be used for ingesting and the new entry and subject operations, not for Searches

    • is still supported, but considered deprecated. It will be supported at least until version 0.3.0, but you should begin moving off of it

  • Internal stability and security fixes

  • Internal changes and bugfixes to data storage layer

  • Simplify several error messages and make them clearer

© 2010- The University of Chicago Legal