Guides / Sending and managing data / Prepare your records for indexing

Algolia uses JSON to model records.

Your records can have attributes with the following formats:

Format Example
string "title": "Breaking Bad"
integer "like_count": 978
float "avg_rating": 1.23456
boolean "featured": true
objects "lead_role": { "name": "Walter White", "portrayed_by": "Bryan Cranston" }
arrays "episodes": ["Crazy Handful of Nothin'", "Gray Matter"]

Here’s an example of a typical record:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
[
  {
    "objectID": 42,
    "title": "Breaking Bad",
    "episodes": [
      "Crazy Handful of Nothin'",
      "Gray Matter"
    ],
    "like_count": 978,
    "avg_rating": 1.23456,
    "air_date": 1356846157,
    "featured": true,
    "lead_role": {
      "name": "Walter White",
      "portrayed_by": "Bryan Cranston"
    },
    "_tags": ["tv series", "drugs"]
  }
]

Integers and booleans are treated as strings by searchable attributes but treated as numerical values by numerical facets. For example, if you want to sort the results by the number of likes, Algolia will treat the like_count attribute as a number, not a string.

Unique record identifier

The objectID attribute is a unique identifier for each record.

You should set objectIDs yourself, based on your data. Since you use objectIDs to update and delete specific records, it’s easier if you’ve defined them yourself. If you don’t set objectIDs, Algolia generates them for you: you can check their values by browsing the index.

When you retrieve objects, objectIDs are in string format, even if you set them as integers. If you want to use integers in your app, convert objectID into integers after retrieving the objects but make sure that all your objectIDs contain integer values.

Since objectID uniquely identifies your objects:

Acceptable characters for objectIDs

objectID strings can:

Dates

Date attributes must be formatted as Unix timestamps (for example, 1435735848).

To convert ISO 8601 formatted dates to Unix timestamps, use the appropriate function for your chosen programming language:

Depending on the function, the output may need further manipulation to produce an integer value in seconds.

Reserved attribute names

Some attribute names are reserved by Algolia. You may be able to use them but be aware of their restrictions.

  • distinctSeqId
  • _geoloc
  • _highlightResult
  • _rankingInfo
  • snippetResult
  • _tags

In your records

In a record, you can use the _tags or _geoloc attribute names but they have an imposed schema. Other attribute names are schema-agnostic.

Reserved words aren’t searchable by default. If you want to search _tags or _geoloc, you must add them to your searchableAttributes.

In the search response

Algolia returns _highlightResult, _snippetResult, _rankingInfo, and _distinctSeqID in the search response. They’re reserved Algolia attributes tied to specific features. To avoid conflicts, don’t specify these attribute names in your records.

Did you find this page helpful?