Как профилировать запросы в Elastic

«Как профилировать запросы в Elastic» — вопрос из категории Базы данных, который задают на 23% собеседований Golang Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Для профилирования запросов в Elasticsearch можно использовать параметр profile: true в теле запроса. Это вернёт детальную информацию о времени выполнения каждого этапа запроса (разбор, поиск, сбор результатов).

Пример:

query := map[string]interface{}{
    "query": map[string]interface{}{
        "match": map[string]interface{}{
            "message": "test",
        },
    },
    "profile": true,
}

Ключевые моменты:

  1. Включается только для диагностики (нагрузочный overhead)
  2. Показывает время на:
    • Query phase
    • Fetch phase
    • Отдельные компоненты (term, phrase queries)
  3. Анализировать через shards[].searches[].query и shards[].searches[].collector в ответе

Для клиента olivere/elastic можно использовать Profile(true) в SearchService.