Hi there,
I have an index full of episodes
with this mapping:
PUT test_episodes
{
"settings": {
"index": {
"number_of_shards": 5,
"number_of_replicas": 1
}
},
"mappings": {
"_doc": {
"dynamic": false,
"properties": {
"id": {
"type": "keyword"
},
"podcastID": {
"type": "keyword"
},
"createdAt": {
"type": "date",
"format": "date_time_no_millis"
}
}
}
}
}
I want to obtain the latest episodes for a podcast (based on podcastID
). I have a query that returns all latest episodes (sorted by createdAt
field). How can I limit this to ONE episode per podcastID?
Current query:
GET test_episodes/_search
{
"query": {
"bool": {
"filter": {
"bool": {
"must": [
{
"range": {
"createdAt": {
"gte": "now-14d/d"
}
}
}
]
}
}
}
},
"sort": {
"createdAt": {
"order": "desc"
}
}
}
Result:
{
"took": 1,
"timed_out": false,
"_shards": {
"total": 5,
"successful": 5,
"skipped": 0,
"failed": 0
},
"hits": {
"total": 5,
"max_score": null,
"hits": [
{
"_index": "test_episodes",
"_type": "_doc",
"_id": "episode-0005",
"_score": null,
"_source": {
"id": "episode-0005",
"podcastID": "podcast-0002",
"createdAt": "2018-10-29T17:00:00+00:00"
},
"sort": [
1540832400000
]
},
{
"_index": "test_episodes",
"_type": "_doc",
"_id": "episode-0002",
"_score": null,
"_source": {
"id": "episode-0002",
"podcastID": "podcast-0001",
"createdAt": "2018-10-29T16:00:00+00:00"
},
"sort": [
1540828800000
]
},
{
"_index": "test_episodes",
"_type": "_doc",
"_id": "episode-0004",
"_score": null,
"_source": {
"id": "episode-0004",
"podcastID": "podcast-0002",
"createdAt": "2018-10-29T16:00:00+00:00"
},
"sort": [
1540828800000
]
},
{
"_index": "test_episodes",
"_type": "_doc",
"_id": "episode-0001",
"_score": null,
"_source": {
"id": "episode-0001",
"podcastID": "podcast-0001",
"createdAt": "2018-10-29T15:00:00+00:00"
},
"sort": [
1540825200000
]
},
{
"_index": "test_episodes",
"_type": "_doc",
"_id": "episode-0003",
"_score": null,
"_source": {
"id": "episode-0003",
"podcastID": "podcast-0002",
"createdAt": "2018-10-29T14:00:00+00:00"
},
"sort": [
1540821600000
]
}
]
}
}
Desired outcome result:
Only episode-0005
and episode-0002
should be returned.
Thanks!
Christian