Author: Irene Steves and Bryce Mecum
Date: 2021-05-14

# Searching RT

#### Irene Steves and Bryce Mecum

#### 2021-05-14

Searching through RT requires some knowledge of how RT does queries. This vignette provides a basic introduction to RT’s query syntax and some examples of how to make queries with this package. Best Practical’s Query Builder documentation and Ticket SQL wiki page highlight some of the key aspects of query-building and are useful to reference while learning.

## Writing a query

The `rt_ticket_search` function makes it easy to search through your tickets. These are the fields that it will return by default, and that you can use to search with:

There are additional queryable fields such as `FileName`, `ContentType`, and `Content`, `Requestor.Name` that you can explore in the Query Builder (Search –> Tickets –> New Search).

These fields are some of the most commonly queried:

- id - the ticket #
- Subject - the subject of the ticket
- Owner - the current owner of the ticket
- Queue - the queue(s) you want to search through
- Content - the text content of your RT tickets (email correspondence, comments, etc.); note: unless the full-text indexing feature is enabled, you will only be able to search through the metadata of your tickets
- FileName - the name of an attached file

To build a query, you’ll want to use the following vocabulary:

- `AND` or `OR` to join multiple query conditions together
- `=` to specify that a field `is` or is `equal to` something
- `!=` to specify that a field `is not` or is `not equal to` something
- `<` or `>` to specify that a field `less than` (`before`) or `greater than` (`after`) something
- `LIKE` to specify that a field `matches` something
- `NOT LIKE` to specify that a field `doesn't match` something

## Example queries

To search for all tickets in the “General” queue, we’d run the following:

    result <- rt_ticket_search("Queue = 'General'")

Note that, by default, `rt_ticket_search` returns a `data.frame` or `tibble` (if installed).

You can search against multiple fields using `AND` or `OR` to combine them.

    rt_ticket_search("Queue = 'General' AND Subject LIKE 'test'")

Use parentheses to group query parameters together for more advanced logic.

    rt_ticket_search("(Status = 'new' OR Status = 'open') AND Queue = 'General'")

For numeric and date/time fields, you can use `>`, `>=`, `<`, and `<=` in addition to `=`.

    rt_ticket_search("Started > '2018-04-04'")

You can also use special date syntax for more options.

    rt_ticket_search("Created >= '2 days ago'")

One of the most common use-cases is searching through RT ticket content. Note that this will only work if your RT installation has full text indexing turned on.

    result <- rt_ticket_search("Content LIKE 'Can you please advise'")