PunchPHOTOS: Osimhen resumes training ahead of Kasimpasa clashBollywood HungamaKiara Advani and Sidharth Malhotra announce second pregnancy with adorable post: “Blessed once again”The Jerusalem PostExtremist Israeli settlers attack Palestinian home in West Bank, set vehicle on fire - reportESPN DeportesEspaña estira el mayor invicto de la historia: cuántos partidos lleva sin perderDaily MaverickDRAFT DODGING: Three years, 6,000 pages, no labels: Who’s stalling SA’s food warnings?ESPNMessi marks tearful Argentina farewell with goal: Wish I could play foreverInquirerProsecution seeks to show Dutertes hid P96M via unused manager’s checksThe South AfricanLionel Messi retires from international football in styleSky TG24Lewis Capaldi compie 30 anni, le sue canzoni più famose da Someone you Loved a Forget MeBusiness AMAI-aandelen stuwen S&P 500 en Nasdaq naar nieuwe recordhoogtesZDF heuteAktuelle Pressemitteilungen des ZDFRTP DesportoPortugal perde com Itália no Mundial feminino de hóquei
The Daily Newsstand · Free, Always
Wednesday, October 7, 2026

[Перевод] Новые агрегации перцентилей и медианного абсолютного отклонения в Manticore Search

Translate
Новые агрегации перцентилей и медианного абсолютного отклонения в Manticore Search

Новые агрегации перцентилей и медианного абсолютного отклонения в Manticore Search

Когда средние значения скрывают реальную картину, нужны более информативные метрики распределения. Одно лишь среднее может выглядеть «здоровым», но при этом маскировать замедления в длинном хвосте, перекошенные распределения значений или небольшую группу экстремальных выбросов, которые сильно влияют на пользовательский опыт и операционные риски. Теперь Manticore Search поддерживает агрегации перцентилей, перцентильных рангов и MAD (медианного абсолютного отклонения), так что вы можете анализировать разброс, хвосты и выбросы прямо в поисковых запросах. Они особенно полезны для мониторинга задержек, анализа цен, поведения пользователей и любых задач, где «среднего» недостаточно.

  • percentiles(field[, {values='...',compression=N}]) Возвращает оценочные значения перцентилей (например, p50, p95, p99)

  • percentile_ranks(field, {values='...',compression=N}) Возвращает оценочную долю документов со значениями, меньшими или равными каждому заданному значению

  • median_absolute_deviation(field[, {compression=N}]) Возвращает оценочное значение MAD — устойчивую (робастную) меру разброса вокруг медианы

Эти функции по своей природе приближённые, что удерживает потребление памяти в заданных пределах и делает производительность предсказуемой, а необязательный параметр compression управляет компромиссом между точностью и памятью: меньшие значения работают быстрее и легче по памяти, но могут давать большую погрешность; значение по умолчанию — 200.

Использование

Manticore Search поддерживает два варианта синтаксиса для этих агрегаций: SQL и JSON API.

Пример на SQL

SELECT
    percentiles(latency) AS p_default,
    percentiles(latency, {values='5,50,95',compression=200}) AS p_custom,
    percentile_ranks(latency, {values='10,150,1500',compression=200}) AS r_custom,
    median_absolute_deviation(latency, {compression=200}) AS mad
FROM agg_td\G
*************************** 1. row ***************************
p_default: {"1":10,"5":10,"25":20,"50":30,"75":40,"95":50,"99":50}
 p_custom: {"5":10,"50":30,"95":50}
 r_custom: {"10":20,"150":100,"1500":100}
      mad: {"value":10,"value_as_string":"10"}

Как это читать

  • p_custom даёт прямые пороги перцентилей (например, задержку p95).

  • r_custom показывает долю документов ниже заданных порогов.

  • mad показывает, насколько плотно значения сгруппированы вокруг медианы.

Пример HTTP JSON

POST /json/search
{
  "table": "agg_td",
  "size": 0,
  "aggs": {
    "latency_percentiles": {
      "percentiles": {
        "field": "latency",
        "values": [5, 50, 95],
        "keyed": true
      }
    },
    "latency_ranks": {
      "percentile_ranks": {
        "field": "latency",
        "values": [10, 150, 1500],
        "keyed": true
      }
    },
    "latency_mad": {
      "median_absolute_deviation": {
        "field": "latency",
        "tdigest": {
          "compression": 200
        }
      }
    }
  }
}
{
  "took": 0,
  "timed_out": false,
  "aggregations": {
    "latency_percentiles": {
      "values": {
        "5.0": 10,
        "50.0": 30,
        "95.0": 50
      }
    },
    "latency_ranks": {
      "values": {
        "10.0": 20,
        "150.0": 100,
        "1500.0": 100
      }
    },
    "latency_mad": {
      "value": 10,
      "value_as_string": "10"
    }
  },
  "hits": {
    "total": 5,
    "hits": []
  }
}

Практические сценарии и советы

  • Производительность поиска/API: отслеживайте задержки p50/p95/p99 и MAD для оценки джиттера.

  • Ценообразование в e-commerce: выявляйте сдвиги в распределении цен и аномальный разброс.

  • Выявление мошенничества и аномалий: сравнивайте медианное поведение с отклонениями на основе MAD.

  • Отчётность по SLO: сочетайте перцентильные ранги с бизнес-порогами (например, «% запросов быстрее 200 мс»).

  • Используйте percentiles, когда нужны пороговые значения (p95 = ?).

  • Используйте percentile_ranks, когда нужны проценты (<=200ms = ?).

  • Используйте MAD, когда выбросы — обычное дело и нужна устойчивая мера разброса.

  • Начинайте со значения по умолчанию compression=200; увеличивайте его, если нужна более высокая точность.

Итог

С агрегациями перцентилей и MAD Manticore Search даёт более глубокую статистическую видимость прямо внутри вашего рабочего процесса поисковой аналитики. Теперь вы можете отслеживать хвосты распределения, проверять пороговые значения и измерять устойчивый разброс в одном месте — не выгружая сырые данные во внешние системы.

View the original on Хабр →

KioskNews shows a cleaned-up reading view extracted from the publisher’s page — the original always lives on their site, not ours.