Я видел сравнения, которые говорят, что в ElasticSearch индекс сопоставим с базой данных, а таблица сопоставима с типом.
Я думаю, вы могли бы пойти по этому поводу двумя способами.
Вариант 1: один указатель и один тип. Каждый подтип Activity индексируется в ES в одном типе, а в некоторых документах отсутствуют поля.
Это даст вам
- Одно отображение типов для поддержки, если значений по умолчанию недостаточно, у вас будут все поля всех ваших подтипов.
- Общие поля должны быть проанализированы одинаково.
- Все документы имеют только подмножество полей для каждого типа (на самом деле это не проблема, просто странно)
Вариант 2: один индекс и несколько типов. Каждое расширение Activity является типом в ElasticSearch.
- Поддерживаются многие сопоставления типов.
- Общие поля можно анализировать по-разному.
- Теоретически каждый документ имеет все поля отображений.
В любом подходе вы можете искать все подтипы. Я думаю, что сложность поисковых запросов будет зависеть от приложения.
Для большинства приложений, я думаю, я бы предпочел вариант 2. Каждый подтип должен иметь свой собственный "тип" в ElasticSearch. Вы можете использовать Facets для разных типов, если хотите. Если ваши подтипы относительно просты, я думаю, вы могли бы сделать вариант варианта 1 все же.
Когда вы реализуете это, я бы хотел услышать, как это получилось.