About the parentId property
About the parentId property
When adding or updating items in a Push source, you can use the parentId
property to define parent-child relationships between those items.
Doing so populates a set of fields that you can leverage in nested queries.
|
Note
Using the If you want to request and render folded results from a Push source, you should therefore rather define your parent-child relationships by sending metadata to populate the standard folding fields in your index (that is, |
Define parent-child relationships
You can use the parentId
property to define simple parent-child relationships between items in a Push source.
To do so:
-
If an item is the parent of a relationship, set its
parentId
to its owndocumentId
. -
If an item is a child in a relationship, set its
parentId
to thedocumentId
of its parent.
Specifying a parentId
when pushing an item always populates the @topparentid
field for that item.
If the parentId
value differs from the documentId
value of the pushed item, the @attachmentparentid
field gets populated as well.
Example
In a Push source, you want to define simple parent-child relationships between items representing directors and movies.
-
Request definition
POST https://api.cloud.coveo.com/push/v1/organizations/coveomovieorganization/files HTTP/1.1 Authorization: Bearer **********-****-****-****-************
-
You upload a batch of items into the file container you previously created, using the
parentId
property to define the desired relationships.Request definition
PUT https://coveo-nprod-customerdata.s3.amazonaws.com/proda/blobstore/coveomovieorganization/2a65f989-2371-4dc6-b6aa-198b5b88ff29?x-amz-security-token=FQoGZXIvYXdzEB8aDL37SykFY6%2FzbYBDPCLlAQmJ0nWbMK0Bxq3wcGnEq1bPcDGsP7dTaKkuuAPOA7LaNZhosW3d8ybg14N8o9OAaUS%2BoQ9Y1oZROmh%2BHZbP7krJAlDRUQS2NtrGxUh20h3GInWxTM5CZ86p5een1Gzsk%2FuCrKCXpqGFJZ1UwEFkEGtj2M2l%2F3eOhfPd6ga9%2F51NgHQPXRc4z%2F5NLiEfWlv%2FxzLZHrtznCjj8fi77QKcLkzO9kiLOtWtZVxmoMg4jVZYwZuOdfRqAVEzaWIsP8lQ2O5AWTwD5O8HKjmtO6v%2FZiV9diYDx7Z7WtrKJg1v2upFHhxljxUo6%2BCG2wU%3D&AWSAccessKeyId=ASIAYKDJLZIT5VRAMAJE&Expires=1533134515&Signature=fyZW7rDLYWSt%2B6rRTPaQPc72uUY%3D HTTP/1.1 Content-Type: application/octet-stream x-amz-server-side-encryption: "AES256"
Request body
{ "addOrUpdate": [ { "title": "Edgar Wright", "data": "...", "documentId": "file://directors/edgar-wright.txt", "parentId": "file://directors/edgar-wright.txt", "documenttype": "Director" }, { "title": "The World's End", "data": "...", "documentId": "file://movies/the-world-s-end.txt", "parentId": "file://directors/edgar-wright.txt", "documenttype": "Movie" }, { "title": "Baby Driver", "data": "...", "documentId": "file://movies/baby-driver.txt", "parentId": "file://directors/edgar-wright.txt", "documenttype": "Movie" }, { "title": "Stanley Kubrick", "data": "...", "documentId": "file://directors/stanley-kubrick.txt", "parentId": "file://directors/stanley-kubrick.txt", "documenttype": "Director" }, { "title": "The Shining", "data": "...", "documentId": "file://movies/the-shining.txt", "parentId": "file://directors/stanley-kubrick.txt", "documenttype": "Movie" } ], "delete": [] }
-
You push the file container to your source.
Request definition
POST https://api.cloud.coveo.com/push/v1/organizations/coveomovieorganization/sources/vzievcixq66qq5q6xulpy32dqi-coveomovieorganization/documents/batch?fileId=b5e8767e-8f0d-4a89-9095-1127915c89c7 HTTP/1.1 Authorization: Bearer **********-****-****-****-************
When the indexing pipeline finishes processing the batch, the @topparentid
and @attachmentparentid
fields are populated as follows:
Item title | Document type |
@topparentid value |
@attachmentparentid value |
---|---|---|---|
Edgar Wright |
Director |
32345 |
N/A |
Stanley Kubrick |
Director |
32338 |
N/A |
The World’s End |
Movie |
32345 |
32345 |
Baby Driver |
Movie |
32345 |
32345 |
The Shining |
Movie |
32338 |
32338 |
Leverage parentId-generated fields in nested queries
The @topparentid
and @attachmentparentid
numeric fields can be useful in nested queries.
|
Leading practice
Ensure that the Use cache for numeric queries option is enabled for nested query fields. Doing so will allow for quicker numeric operations (for example, comparing integers), making query executions faster. |
Example
When querying items from the Push source described in the Defining parent-child relationships example, you could use the following nested query to retrieve all movies by director Edgar Wright:
[[@attachmentparentid] @topparentid==32345]
|
Query response excerpt
|