blob: bd5a357ee0372a1e86f82296659206ab33495342 [file] [log] [blame] [view]
---
name: Basic Search
route: /SearchBasic
menu: Documentation
submenu: Search
---
import themen from 'theme/styles/styled-colors';
import * as theme from 'react-syntax-highlighter/dist/esm/styles/hljs';
import SyntaxHighlighter from 'react-syntax-highlighter';
import Img from 'theme/components/shared/Img'
# 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)
<SyntaxHighlighter wrapLines={true} language="json" style={theme.dark}>
{`{
"typeName": "hive_column",
"excludeDeletedEntities": true,
"classification": "PII",
"query": "",
"offset": 0,
"limit": 25,
"entityFilters": { },
"tagFilters": { },
"attributes": [ "table", "qualifiedName"]
}`}
</SyntaxHighlighter>
**Field description**
<SyntaxHighlighter wrapLines={true} language="json" style={theme.dark}>
{`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`}
</SyntaxHighlighter>
<Img src={`/images/twiki/search-basic-hive_column-PII.png`} height="500" width="840"/>
Attribute based filtering can be done on multiple attributes with AND/OR conditions.
**Examples of filtering (for hive_table attributes)**
* Single attribute
<SyntaxHighlighter wrapLines={true} language="json" style={theme.dark}>
{` {
"typeName": "hive_table",
"excludeDeletedEntities": true,
"offset": 0,
"limit": 25,
"entityFilters": {
"attributeName": "name",
"operator": "contains",
"attributeValue": "customers"
},
"attributes": [ "db", "qualifiedName" ]
}`}
</SyntaxHighlighter>
<Img src={`/images/twiki/search-basic-hive_table-customers.png`} height="500" width="840"/>
* Multi-attribute with OR
<SyntaxHighlighter wrapLines={true} language="json" style={theme.dark}>
{` {
"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" ]
}`}
</SyntaxHighlighter>
<Img src={`/images/twiki/search-basic-hive_table-customers-or-provider.png`} height="500" width="840"/>
* Multi-attribute with AND
<SyntaxHighlighter wrapLines={true} language="json" style={theme.dark}>
{` {
"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" ]
}`}
</SyntaxHighlighter>
<Img src={`/images/twiki/search-basic-hive_table-customers-owner_is_hive.png`} height="500" width="840"/>
**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**
<SyntaxHighlighter wrapLines={true} language="shell" style={theme.dark}>
{`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`}
</SyntaxHighlighter>