Работал ли с ElasticSearch

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

Ответ

Да, работал. Использовал ElasticSearch для полнотекстового поиска, логгирования и аналитики. Взаимодействовал через официальный клиент elastic/go-elasticsearch или olivere/elastic (v7).

Пример индексации и поиска:

client, err := elasticsearch.NewClient(elasticsearch.Config{  
  Addresses: []string{"http://localhost:9200"},  
})  

// Индексация  
doc := `{"title": "Golang", "content": "Concurrent language"}`  
_, err = client.Index("articles", strings.NewReader(doc))  

// Поиск  
query := `{"query": {"match": {"title": "Golang"}}}`  
res, err := client.Search(client.Search.WithBody(strings.NewReader(query)))  

Нюансы:

  • Тонкости настройки маппингов
  • Оптимизация bulk-запросов
  • Агрегации для аналитики
  • Ручное управление шардами при высокой нагрузке

Для сложных сценариев (например, join-like запросы) иногда дополнял Redis или PostgreSQL.