Elasticsearch · Elasticsearch 8.19.12
С 2013 года поиск по коду GitHub работал на Elasticsearch: к ноябрю 2013-го — 8 млн репозиториев и около 5 запросов в секунду, позже 162 узла. Одна из жалоб пользователей — один репозиторий забивает всю первую страницу.
Индекс code: repo (keyword), path (keyword), language (keyword), content (text), stars (integer, звёзды репозитория), indexed_at (date).
Найдите файлы на Go, где в content есть оба слова retry и backoff. Из каждого репозитория — один файл, проиндексированный последним. Репозитории — по stars по убыванию, первые 5.
В работе: Выдача поиска по коду, сгруппированная по репозиториям.
Источник: GitHub Engineering, «A brief history of code search at GitHub», 2021. Условие пересказано своими словами.
Какой запрос покажет по одному свежему Go-файлу из каждого репозитория?
- collapse по repo, сортировка stars desc, indexed_at desc
- без collapse
- collapse, indexed_at asc
- collapse без фильтра language