Spec-Zone.ru › Elasticsearch 7
›Elasticsearch Guide [7.17] ›Агрегирования ›Агрегирования по корзинам

Агрегирование выборки

Фильтровальное агрегирование, используемое для ограничения обработки любых вложенных агрегирований образцом из высокорейтинговых документов.

Примеры использования:

  • Сужение фокуса аналитики до совпадений с высоким релевансом, а не потенциально очень длинного хвоста совпадений низкого качества
  • Снижение эксплуатационных расходов агрегирования, которое может производить полезные результаты, используя только образцы, например, significant_terms

Пример:

Запрос к данным StackOverflow для популярного термина javascript или более редкого термина kibana найдёт много документов — большинство из них без слова Kibana. Чтобы сосредоточить агрегирование significant_terms на высокорейтинговых документах, которые, скорее всего, соответствуют наиболее интересным частям нашего запроса, мы используем выборку.

POST /stackoverflow/_search?size=0
{
  "query": {
    "query_string": {
      "query": "tags:kibana OR tags:javascript"
    }
  },
  "aggs": {
    "sample": {
      "sampler": {
        "shard_size": 200
      },
      "aggs": {
        "keywords": {
          "significant_terms": {
            "field": "tags",
            "exclude": [ "kibana", "javascript" ]
          }
        }
      }
    }
  }
}

Ответ:

{
  ...
  "aggregations": {
    "sample": {
      "doc_count": 200, 
      "keywords": {
        "doc_count": 200,
        "bg_count": 650,
        "buckets": [
          {
            "key": "elasticsearch",
            "doc_count": 150,
            "score": 1.078125,
            "bg_count": 200
          },
          {
            "key": "logstash",
            "doc_count": 50,
            "score": 0.5625,
            "bg_count": 50
          }
        ]
      }
    }
  }
}

Всего было отобрано 200 документов. Таким образом, стоимость выполнения вложенного агрегирования significant_terms была ограничена, а не неограничена.

Без агрегирования sampler запрос учитывает весь «длинный хвост» совпадений низкого качества и, следовательно, определяет менее значимые термины, такие как jquery и angular, а не фокусируется на более информативных терминах, связанных с Kibana.

POST /stackoverflow/_search?size=0
{
  "query": {
    "query_string": {
      "query": "tags:kibana OR tags:javascript"
    }
  },
  "aggs": {
    "low_quality_keywords": {
      "significant_terms": {
        "field": "tags",
        "size": 3,
        "exclude": [ "kibana", "javascript" ]
      }
    }
  }
}

Ответ:

{
  ...
  "aggregations": {
    "low_quality_keywords": {
      "doc_count": 600,
      "bg_count": 650,
      "buckets": [
        {
          "key": "angular",
          "doc_count": 200,
          "score": 0.02777,
          "bg_count": 200
        },
        {
          "key": "jquery",
          "doc_count": 200,
          "score": 0.02777,
          "bg_count": 200
        },
        {
          "key": "logstash",
          "doc_count": 50,
          "score": 0.0069,
          "bg_count": 50
        }
      ]
    }
  }
}

shard_size

Параметр shard_size ограничивает количество высокорейтинговых документов, собранных в образце, обрабатываемом на каждом фрагменте. Значение по умолчанию равно 100.

Ограничения

Не может быть вложен в агрегирования breadth_first

Будучи фильтром, основанным на качестве, агрегирование выборки нуждается в доступе к рейтингу релевантности, рассчитанному для каждого документа. Поэтому оно не может быть вложено в агрегирование terms, у которого режим collect_mode изменён со значения по умолчанию depth_first на breadth_first, так как это отбрасывает оценки. В этой ситуации будет выброшено исключение.

© 2023-2025 Elasticsearch
As of September 2024, Elasticsearch is available under a choice of three licenses: the Server Side Public License (SSPL), the Elastic License, or the AGPLv3 (OSI approved).
Elasticsearch and the Elasticsearch logo are trademarks of Elasticsearch B.V., registered in the U.S. and in other countries.
https://www.elastic.co/guide/en/elasticsearch/reference/7.17/search-aggregations-bucket-sampler-aggregation.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API