Basic Search

The basic search allows you to query using typename of an entity, associated classification/tag and has support for filtering on the entity attribute(s) as well as the classification/tag attributes.

The entire query structure can be represented using the following JSON structure (called SearchParameters)

{
  "typeName":               "hive_column",
  "excludeDeletedEntities": true,
  "classification":         "PII",
  "query":                  "",
  "offset":                 0,
  "limit":                  25,
  "entityFilters":          {  },
  "tagFilters":             { },
  "attributes":             [ "table", "qualifiedName"]
}

Field description

   typeName:               the type of entity to look for
   excludeDeletedEntities: should the search exclude deleted entities? (default: true)
   classification:         only include entities with given classification
   query:                  any free text occurrence that the entity should have (generic/wildcard queries might be slow)
   offset:                 starting offset of the result set (useful for pagination)
   limit:                  max number of results to fetch
   entityFilters:          entity attribute filter(s)
   tagFilters:             classification attribute filter(s)
   attributes:             attributes to include in the search result

Attribute based filtering can be done on multiple attributes with AND/OR conditions.

Examples of filtering (for hive_table attributes)

  • Single attribute
   {
     "typeName":               "hive_table",
     "excludeDeletedEntities": true,
     "offset":                 0,
     "limit":                  25,
     "entityFilters": {
        "attributeName":  "name",
        "operator":       "contains",
        "attributeValue": "customers"
     },
     "attributes": [ "db", "qualifiedName" ]
   }
   

  • Multi-attribute with OR
   {
     "typeName":               "hive_table",
     "excludeDeletedEntities": true,
     "offset":                 0,
     "limit":                  25,
     "entityFilters": {
        "condition": "OR",
        "criterion": [
           {
              "attributeName":  "name",
              "operator":       "contains",
              "attributeValue": "customers"
           },
           {
              "attributeName":  "name",
              "operator":       "contains",
              "attributeValue": "provider"
           }
        ]
     },
     "attributes": [ "db", "qualifiedName" ]
   }
   

  • Multi-attribute with AND
   {
     "typeName":               "hive_table",
     "excludeDeletedEntities": true,
     "offset":                 0,
     "limit":                  25,
     "entityFilters": {
        "condition": "AND",
        "criterion": [
           {
              "attributeName":  "name",
              "operator":       "contains",
              "attributeValue": "customers"
           },
           {
              "attributeName":  "owner",
              "operator":       "eq",
              "attributeValue": "hive"
           }
        ]
     },
     "attributes": [ "db", "qualifiedName" ]
  }
   

Supported operators for filtering

  • LT (symbols: <, lt) works with Numeric, Date attributes
  • GT (symbols: >, gt) works with Numeric, Date attributes
  • LTE (symbols: <=, lte) works with Numeric, Date attributes
  • GTE (symbols: >=, gte) works with Numeric, Date attributes
  • EQ (symbols: eq, =) works with Numeric, Date, String attributes
  • NEQ (symbols: neq, !=) works with Numeric, Date, String attributes
  • LIKE (symbols: like, LIKE) works with String attributes
  • STARTS_WITH (symbols: startsWith, STARTSWITH) works with String attributes
  • ENDS_WITH (symbols: endsWith, ENDSWITH) works with String attributes
  • CONTAINS (symbols: contains, CONTAINS) works with String attributes

CURL Samples

    curl -sivk -g
    -u <user>:<password>
    -X POST
    -d '{
            "typeName":               "hive_table",
            "excludeDeletedEntities": true,
            "classification":         "",
            "query":                  "",
            "offset":                 0,
            "limit":                  50,
            "entityFilters": {
               "condition": "AND",
               "criterion": [
                  {
                     "attributeName":  "name",
                     "operator":       "contains",
                     "attributeValue": "customers"
                  },
                  {
                     "attributeName":  "owner",
                     "operator":       "eq",
                     "attributeValue": "hive"
                  }
               ]
            },
            "attributes": [ "db", "qualifiedName" ]
          }'
    <protocol>://<atlas_host>:<atlas_port>/api/atlas/v2/search/basic