Сортировка по баллам для составных результатов агрегации в Elasticsearch - PullRequest
0 голосов
/ 13 сентября 2018

Elasticsearch ver: 6.2.4

Теперь я получил результаты составной агрегации по:

GET index/_search
{
  "aggs": {
    "my_buckets": {
      "composite": {
        "sources": [
          {
            "name": {
              "terms": {
                "field": "name.keyword"
                }
            }
          }
        ]
      }
    }
  },
  "query":{

   }
}

Чтобы упростить вопрос, часть запроса здесь опущена.

Я могу получить такие результаты, как:

"aggregations": {
    "my_buckets": {
      "buckets": [
        {
          "key": {
            "name": "Bill Gates"
          },
          "doc_count": 1
        },
        {
          "key": {
            "name": "Steven Paul Jobs"
          },
          "doc_count": 1
        },
        {
          "key": {
            "name": "Gates Godar"
          },
          "doc_count": 1
        }
        ]
       }
      }

Я заметил, что порядок результатов поиска не отсортирован по сортировке (подобию) строки запроса.

Как мы можем добиться сортировки результатов агрегирования по баллам?

Спасибо.

1 Ответ

0 голосов
/ 02 января 2019

Единственный вариант, который я нашел, - это использовать агрегацию конвейера bucket_sort с использованием значений из максимальной агрегации метрик, считывающих оценку

{
  "aggs": {
    "myBuckets": {
      "composite": {
        "sources": []
      },
      "aggs": {
        "mySort": {
          "bucket_sort": {
            "sort": [
              {
                "max_score": {
                  "order": "desc"
                }
              }
            ]
          }
        },
        "max_score": {
          "max": {
            "script": "_score"
          }
        }
      }
    }
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...