Ответ
Да, работал. Использовал 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.