Ответ
Для профилирования запросов в Elasticsearch можно использовать параметр profile: true в теле запроса. Это вернёт детальную информацию о времени выполнения каждого этапа запроса (разбор, поиск, сбор результатов).
Пример:
query := map[string]interface{}{
"query": map[string]interface{}{
"match": map[string]interface{}{
"message": "test",
},
},
"profile": true,
}
Ключевые моменты:
- Включается только для диагностики (нагрузочный overhead)
- Показывает время на:
- Query phase
- Fetch phase
- Отдельные компоненты (term, phrase queries)
- Анализировать через
shards[].searches[].queryиshards[].searches[].collectorв ответе
Для клиента olivere/elastic можно использовать Profile(true) в SearchService.