Как выбрать сегменты результатов агрегации на основе атрибута документа с наибольшим попаданием? - PullRequest
0 голосов
/ 09 ноября 2019

Я пытаюсь получить результат для следующего запроса 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 будет оценено как ложное, а все остальные значения будут оценены как истинные.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...