Я пытаюсь получить результат для следующего запроса Elasticsearch. Я получил ответ, как показано ниже. Теперь я хочу выбрать сегменты, основываясь на поле документа верхнего попадания «source».
POST /data/_search?size=0{
"aggs":{
"by_partyIds":{
"terms":{
"field":"id.keyword"
},
"aggs":{
"oldest_record":{
"top_hits":{
"sort":[
{
"createdate.keyword":{
"order":"asc"
}
}
],
"_source":[
"source"
],
"size":1
}
}
}
}
}
}
Ответ:
{
"aggregations": {
"by_partyIds": {
"doc_count_error_upper_bound": 0,
"sum_other_doc_count": 0,
"buckets": [
{
"key": "1",
"doc_count": 3,
"oldest_record": {
"hits": {
"total": 3,
"max_score": null,
"hits": [
{
"_index": "data",
"_type": "osr",
"_id": "DcagSm4B9WnM0Ke-MgGk",
"_score": null,
"_source": {
"source": "US"
},
"sort": [
"20-09-18 05:45:26.000000000AM"
]
}
]
}
}
},
{
"key": "2",
"doc_count": 3,
"oldest_record": {
"hits": {
"total": 3,
"max_score": null,
"hits": [
{
"_index": "data",
"_type": "osr",
"_id": "7caiSm4B9WnM0Ke-HwGx",
"_score": null,
"_source": {
"source": "UK"
},
"sort": [
"22-09-18 05:45:26.000000000AM"
]
}
]
}
}
}
]
}
}
}
Теперь я хочу получить сегменты с количеством US в качестве источника,Можем ли мы написать запрос для этого? Я попробовал агрегацию сегментов, которая представляет собой агрегацию родительского конвейера, которая выполняет сценарий, который определяет, будет ли текущий сегмент сохраняться в родительской агрегации с несколькими сегментами. Указанная метрика должна быть числовой, а сценарий должен возвращать логическое значение. Если язык сценария является выражением, то допускается числовое возвращаемое значение. В этом случае 0.0 будет оценено как ложное, а все остальные значения будут оценены как истинные.