:doc:`SageMaker <../../sagemaker>` / Client / search

******
search
******



.. py:method:: SageMaker.Client.search(**kwargs)

  

  Finds SageMaker resources that match a search query. Matching resources are returned as a list of ``SearchRecord`` objects in the response. You can sort the search results by any resource property in a ascending or descending order.

   

  You can query against the following value types: numeric, text, Boolean, and timestamp.

   

  .. note::

    

    The Search API may provide access to otherwise restricted data. See `Amazon SageMaker API Permissions\: Actions, Permissions, and Resources Reference <https://docs.aws.amazon.com/sagemaker/latest/dg/api-permissions-reference.html>`__ for more information.

    

  

  See also: `AWS API Documentation <https://docs.aws.amazon.com/goto/WebAPI/sagemaker-2017-07-24/Search>`_  


  **Request Syntax**
  ::

    response = client.search(
        Resource='TrainingJob'|'Experiment'|'ExperimentTrial'|'ExperimentTrialComponent'|'Endpoint'|'Model'|'ModelPackage'|'ModelPackageGroup'|'Pipeline'|'PipelineExecution'|'FeatureGroup'|'FeatureMetadata'|'Image'|'ImageVersion'|'Project'|'HyperParameterTuningJob'|'ModelCard'|'PipelineVersion',
        SearchExpression={
            'Filters': [
                {
                    'Name': 'string',
                    'Operator': 'Equals'|'NotEquals'|'GreaterThan'|'GreaterThanOrEqualTo'|'LessThan'|'LessThanOrEqualTo'|'Contains'|'Exists'|'NotExists'|'In',
                    'Value': 'string'
                },
            ],
            'NestedFilters': [
                {
                    'NestedPropertyName': 'string',
                    'Filters': [
                        {
                            'Name': 'string',
                            'Operator': 'Equals'|'NotEquals'|'GreaterThan'|'GreaterThanOrEqualTo'|'LessThan'|'LessThanOrEqualTo'|'Contains'|'Exists'|'NotExists'|'In',
                            'Value': 'string'
                        },
                    ]
                },
            ],
            'SubExpressions': [
                {'... recursive ...'},
            ],
            'Operator': 'And'|'Or'
        },
        SortBy='string',
        SortOrder='Ascending'|'Descending',
        NextToken='string',
        MaxResults=123,
        CrossAccountFilterOption='SameAccount'|'CrossAccount',
        VisibilityConditions=[
            {
                'Key': 'string',
                'Value': 'string'
            },
        ]
    )
    
  :type Resource: string
  :param Resource: **[REQUIRED]** 

    The name of the SageMaker resource to search for.

    

  
  :type SearchExpression: dict
  :param SearchExpression: 

    A Boolean conditional statement. Resources must satisfy this condition to be included in search results. You must provide at least one subexpression, filter, or nested filter. The maximum number of recursive ``SubExpressions``, ``NestedFilters``, and ``Filters`` that can be included in a ``SearchExpression`` object is 50.

    

  
    - **Filters** *(list) --* 

      A list of filter objects.

      

    
      - *(dict) --* 

        A conditional statement for a search expression that includes a resource property, a Boolean operator, and a value. Resources that match the statement are returned in the results from the `Search <https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_Search.html>`__ API.

         

        If you specify a ``Value``, but not an ``Operator``, SageMaker uses the equals operator.

         

        In search, there are several property types:

          Metrics  

        To define a metric filter, enter a value using the form ``"Metrics.<name>"``, where ``<name>`` is a metric name. For example, the following filter searches for training jobs with an ``"accuracy"`` metric greater than ``"0.9"``:

         

        ``{``

         

        ``"Name": "Metrics.accuracy",``

         

        ``"Operator": "GreaterThan",``

         

        ``"Value": "0.9"``

         

        ``}``

          HyperParameters  

        To define a hyperparameter filter, enter a value with the form ``"HyperParameters.<name>"``. Decimal hyperparameter values are treated as a decimal in a comparison if the specified ``Value`` is also a decimal value. If the specified ``Value`` is an integer, the decimal hyperparameter values are treated as integers. For example, the following filter is satisfied by training jobs with a ``"learning_rate"`` hyperparameter that is less than ``"0.5"``:

         

        ``{``

         

        ``"Name": "HyperParameters.learning_rate",``

         

        ``"Operator": "LessThan",``

         

        ``"Value": "0.5"``

         

        ``}``

          Tags  

        To define a tag filter, enter a value with the form ``Tags.<key>``.

        

      
        - **Name** *(string) --* **[REQUIRED]** 

          A resource property name. For example, ``TrainingJobName``. For valid property names, see `SearchRecord <https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_SearchRecord.html>`__. You must specify a valid property for the resource.

          

        
        - **Operator** *(string) --* 

          A Boolean binary operator that is used to evaluate the filter. The operator field contains one of the following values:

            Equals  

          The value of ``Name`` equals ``Value``.

            NotEquals  

          The value of ``Name`` doesn't equal ``Value``.

            Exists  

          The ``Name`` property exists.

            NotExists  

          The ``Name`` property does not exist.

            GreaterThan  

          The value of ``Name`` is greater than ``Value``. Not supported for text properties.

            GreaterThanOrEqualTo  

          The value of ``Name`` is greater than or equal to ``Value``. Not supported for text properties.

            LessThan  

          The value of ``Name`` is less than ``Value``. Not supported for text properties.

            LessThanOrEqualTo  

          The value of ``Name`` is less than or equal to ``Value``. Not supported for text properties.

            In  

          The value of ``Name`` is one of the comma delimited strings in ``Value``. Only supported for text properties.

            Contains  

          The value of ``Name`` contains the string ``Value``. Only supported for text properties.

           

          A ``SearchExpression`` can include the ``Contains`` operator multiple times when the value of ``Name`` is one of the following:

           

          
          * ``Experiment.DisplayName``
           
          * ``Experiment.ExperimentName``
           
          * ``Experiment.Tags``
           
          * ``Trial.DisplayName``
           
          * ``Trial.TrialName``
           
          * ``Trial.Tags``
           
          * ``TrialComponent.DisplayName``
           
          * ``TrialComponent.TrialComponentName``
           
          * ``TrialComponent.Tags``
           
          * ``TrialComponent.InputArtifacts``
           
          * ``TrialComponent.OutputArtifacts``
          

           

          A ``SearchExpression`` can include only one ``Contains`` operator for all other values of ``Name``. In these cases, if you include multiple ``Contains`` operators in the ``SearchExpression``, the result is the following error message: " ``'CONTAINS' operator usage limit of 1 exceeded.``"

          

        
        - **Value** *(string) --* 

          A value used with ``Name`` and ``Operator`` to determine which resources satisfy the filter's condition. For numerical properties, ``Value`` must be an integer or floating-point decimal. For timestamp properties, ``Value`` must be an ISO 8601 date-time string of the following format: ``YYYY-mm-dd'T'HH:MM:SS``.

          

        
      
  
    - **NestedFilters** *(list) --* 

      A list of nested filter objects.

      

    
      - *(dict) --* 

        A list of nested `Filter <https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_Filter.html>`__ objects. A resource must satisfy the conditions of all filters to be included in the results returned from the `Search <https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_Search.html>`__ API.

         

        For example, to filter on a training job's ``InputDataConfig`` property with a specific channel name and ``S3Uri`` prefix, define the following filters:

         

        
        * ``'{Name:"InputDataConfig.ChannelName", "Operator":"Equals", "Value":"train"}',``
         
        * ``'{Name:"InputDataConfig.DataSource.S3DataSource.S3Uri", "Operator":"Contains", "Value":"mybucket/catdata"}'``
        

        

      
        - **NestedPropertyName** *(string) --* **[REQUIRED]** 

          The name of the property to use in the nested filters. The value must match a listed property name, such as ``InputDataConfig``.

          

        
        - **Filters** *(list) --* **[REQUIRED]** 

          A list of filters. Each filter acts on a property. Filters must contain at least one ``Filters`` value. For example, a ``NestedFilters`` call might include a filter on the ``PropertyName`` parameter of the ``InputDataConfig`` property: ``InputDataConfig.DataSource.S3DataSource.S3Uri``.

          

        
          - *(dict) --* 

            A conditional statement for a search expression that includes a resource property, a Boolean operator, and a value. Resources that match the statement are returned in the results from the `Search <https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_Search.html>`__ API.

             

            If you specify a ``Value``, but not an ``Operator``, SageMaker uses the equals operator.

             

            In search, there are several property types:

              Metrics  

            To define a metric filter, enter a value using the form ``"Metrics.<name>"``, where ``<name>`` is a metric name. For example, the following filter searches for training jobs with an ``"accuracy"`` metric greater than ``"0.9"``:

             

            ``{``

             

            ``"Name": "Metrics.accuracy",``

             

            ``"Operator": "GreaterThan",``

             

            ``"Value": "0.9"``

             

            ``}``

              HyperParameters  

            To define a hyperparameter filter, enter a value with the form ``"HyperParameters.<name>"``. Decimal hyperparameter values are treated as a decimal in a comparison if the specified ``Value`` is also a decimal value. If the specified ``Value`` is an integer, the decimal hyperparameter values are treated as integers. For example, the following filter is satisfied by training jobs with a ``"learning_rate"`` hyperparameter that is less than ``"0.5"``:

             

            ``{``

             

            ``"Name": "HyperParameters.learning_rate",``

             

            ``"Operator": "LessThan",``

             

            ``"Value": "0.5"``

             

            ``}``

              Tags  

            To define a tag filter, enter a value with the form ``Tags.<key>``.

            

          
            - **Name** *(string) --* **[REQUIRED]** 

              A resource property name. For example, ``TrainingJobName``. For valid property names, see `SearchRecord <https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_SearchRecord.html>`__. You must specify a valid property for the resource.

              

            
            - **Operator** *(string) --* 

              A Boolean binary operator that is used to evaluate the filter. The operator field contains one of the following values:

                Equals  

              The value of ``Name`` equals ``Value``.

                NotEquals  

              The value of ``Name`` doesn't equal ``Value``.

                Exists  

              The ``Name`` property exists.

                NotExists  

              The ``Name`` property does not exist.

                GreaterThan  

              The value of ``Name`` is greater than ``Value``. Not supported for text properties.

                GreaterThanOrEqualTo  

              The value of ``Name`` is greater than or equal to ``Value``. Not supported for text properties.

                LessThan  

              The value of ``Name`` is less than ``Value``. Not supported for text properties.

                LessThanOrEqualTo  

              The value of ``Name`` is less than or equal to ``Value``. Not supported for text properties.

                In  

              The value of ``Name`` is one of the comma delimited strings in ``Value``. Only supported for text properties.

                Contains  

              The value of ``Name`` contains the string ``Value``. Only supported for text properties.

               

              A ``SearchExpression`` can include the ``Contains`` operator multiple times when the value of ``Name`` is one of the following:

               

              
              * ``Experiment.DisplayName``
               
              * ``Experiment.ExperimentName``
               
              * ``Experiment.Tags``
               
              * ``Trial.DisplayName``
               
              * ``Trial.TrialName``
               
              * ``Trial.Tags``
               
              * ``TrialComponent.DisplayName``
               
              * ``TrialComponent.TrialComponentName``
               
              * ``TrialComponent.Tags``
               
              * ``TrialComponent.InputArtifacts``
               
              * ``TrialComponent.OutputArtifacts``
              

               

              A ``SearchExpression`` can include only one ``Contains`` operator for all other values of ``Name``. In these cases, if you include multiple ``Contains`` operators in the ``SearchExpression``, the result is the following error message: " ``'CONTAINS' operator usage limit of 1 exceeded.``"

              

            
            - **Value** *(string) --* 

              A value used with ``Name`` and ``Operator`` to determine which resources satisfy the filter's condition. For numerical properties, ``Value`` must be an integer or floating-point decimal. For timestamp properties, ``Value`` must be an ISO 8601 date-time string of the following format: ``YYYY-mm-dd'T'HH:MM:SS``.

              

            
          
      
      
  
    - **SubExpressions** *(list) --* 

      A list of search expression objects.

      

    
      - *(dict) --* 

        A multi-expression that searches for the specified resource or resources in a search. All resource objects that satisfy the expression's condition are included in the search results. You must specify at least one subexpression, filter, or nested filter. A ``SearchExpression`` can contain up to twenty elements.

         

        A ``SearchExpression`` contains the following components:

         

        
        * A list of ``Filter`` objects. Each filter defines a simple Boolean expression comprised of a resource property name, Boolean operator, and value.
         
        * A list of ``NestedFilter`` objects. Each nested filter defines a list of Boolean expressions using a list of resource properties. A nested filter is satisfied if a single object in the list satisfies all Boolean expressions.
         
        * A list of ``SearchExpression`` objects. A search expression object can be nested in a list of search expression objects.
         
        * A Boolean operator: ``And`` or ``Or``.
        

        

      
  
    - **Operator** *(string) --* 

      A Boolean operator used to evaluate the search expression. If you want every conditional statement in all lists to be satisfied for the entire search expression to be true, specify ``And``. If only a single conditional statement needs to be true for the entire search expression to be true, specify ``Or``. The default value is ``And``.

      

    
  
  :type SortBy: string
  :param SortBy: 

    The name of the resource property used to sort the ``SearchResults``. The default is ``LastModifiedTime``.

    

  
  :type SortOrder: string
  :param SortOrder: 

    How ``SearchResults`` are ordered. Valid values are ``Ascending`` or ``Descending``. The default is ``Descending``.

    

  
  :type NextToken: string
  :param NextToken: 

    If more than ``MaxResults`` resources match the specified ``SearchExpression``, the response includes a ``NextToken``. The ``NextToken`` can be passed to the next ``SearchRequest`` to continue retrieving results.

    

  
  :type MaxResults: integer
  :param MaxResults: 

    The maximum number of results to return.

    

  
  :type CrossAccountFilterOption: string
  :param CrossAccountFilterOption: 

    A cross account filter option. When the value is ``"CrossAccount"`` the search results will only include resources made discoverable to you from other accounts. When the value is ``"SameAccount"`` or ``null`` the search results will only include resources from your account. Default is ``null``. For more information on searching for resources made discoverable to your account, see `Search discoverable resources <https://docs.aws.amazon.com/sagemaker/latest/dg/feature-store-cross-account-discoverability-use.html>`__ in the SageMaker Developer Guide. The maximum number of ``ResourceCatalog``s viewable is 1000.

    

  
  :type VisibilityConditions: list
  :param VisibilityConditions: 

    Limits the results of your search request to the resources that you can access.

    

  
    - *(dict) --* 

      The list of key-value pairs used to filter your search results. If a search result contains a key from your list, it is included in the final search response if the value associated with the key in the result matches the value you specified. If the value doesn't match, the result is excluded from the search response. Any resources that don't have a key from the list that you've provided will also be included in the search response.

      

    
      - **Key** *(string) --* 

        The key that specifies the tag that you're using to filter the search results. It must be in the following format: ``Tags.<key>``.

        

      
      - **Value** *(string) --* 

        The value for the tag that you're using to filter the search results.

        

      
    

  
  :rtype: dict
  :returns: 
    

    **Response Syntax**
    ::

        # This section is too large to render.
        # Please see the AWS API Documentation linked below.

    `AWS API Documentation <https://docs.aws.amazon.com/goto/WebAPI/sagemaker-2017-07-24/Search>`_


    

    **Response Structure**
    ::

        # This section is too large to render.
        # Please see the AWS API Documentation linked below.

    `AWS API Documentation <https://docs.aws.amazon.com/goto/WebAPI/sagemaker-2017-07-24/Search>`_


    