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 |
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
|