Skip to main content

Search

Bellamy Book provides full-text search across users, posts, blogs, and hashtags using Elasticsearch/OpenSearch. The Search API (api/Search) supports universal search, type-specific search, autocomplete, recommendations, trending, and search history. The social frontend has a search page that calls these endpoints.


Overview

  • Backend: ElasticsearchSyncWorker and ElasticsearchSyncJob (Quartz) keep PostgreSQL data synced to Elasticsearch. SearchController (api/Search) queries Elasticsearch and returns unified or type-specific results.
  • Frontend: Search page (e.g. /search) — query input, filters by type (user, post, blog, hashtag), results list. Blocked users are excluded from results.
  • Analytics: Search queries can be recorded for analytics and recommendations (admin search analytics, recommendation service).

API Endpoints (api/Search)

All search endpoints require authorization (User, Admin, or Moderator role).

MethodEndpointDescription
GET/api/SearchUniversal search — query: q (required), types (user, post, blog, hashtag), page, pageSize, sortBy, sortDesc. Returns results by type; blocked users excluded.
GET/api/Search/autocompleteAutocomplete suggestions — query: q, type, limit
GET/api/Search/recommendationsPersonalized search recommendations (e.g. based on history)
GET/api/Search/trendingTrending search terms
POST/api/Search/recordRecord a search (body: query, types) for analytics/recommendations
GET/api/Search/historyCurrent user's search history
DELETE/api/Search/historyClear search history
GET/api/Search/relatedRelated content for a given query or context
GET/api/Search/postsSearch posts only — query: q, page, pageSize, filters
GET/api/Search/blogsSearch blogs only
GET/api/Search/usersSearch users only
GET/api/Search/hashtagsSearch hashtags only

Indexing and sync

  • Elasticsearch/OpenSearch holds indexes for users, posts, blogs, and hashtags.
  • ElasticsearchSyncWorker (Kafka) syncs on content events; ElasticsearchSyncJob (Quartz, default every 15 minutes) performs catch-up sync. See Scheduled Jobs and Workers.