Я сфокусирован на том, что, по-видимому, является фундаментальной проблемой с Elasticsearch и полиморфными данными. Я хотел бы иметь возможность находить несколько типов результатов (например, пользователей, видео и плейлисты) только с одним запросом Elasticsearch. Это должен быть только один запрос, так как таким образом Elasticsearch может делать все скоринг, и мне не придется делать какие-либо магии для объединения нескольких результатов запроса разных типов.Поиск по полиморфным данным с помощью Elasticsearch
Я знаю, что Elasticsearch использует плоскую структуру документа, что приводит к следующей проблеме. Если я индексирую полиморфные данные, мне придется указать «недостающее» значение для каждого уникального атрибута, который мне очень нравится в подсчете подтипов полиморфных данных.
Я искал примеры других решений этой проблемы и не мог найти их. В документации тоже ничего не говорится. Могу ли я игнорировать что-то очевидное или был Elasticsearch просто не предназначен для того, чтобы сделать что-то подобное?
С наилучшими пожеланиями,
Стеффан
Проблема с объединением результатов со стороны приложения заключается в том, что подсчет очков не имеет смысла между запросами, поэтому, хотя потоки отсортированы, то, как разные потоки связаны друг с другом, по-прежнему вам нужно определить, что что я имею в виду под магией. В противном случае, большое вам спасибо за ваш ответ! На самом деле я пока не беспокоюсь о накладных расходах, но я помню, как я читал о Lucene и проблемах с разреженными данными. Природа полиморфных данных затрудняет работу любой поисковой системы, хотя я бы ожидал, что где-то будет больше примеров. – steffansluis
Я бы сказал, если только скоринг - единственная проблема - попробуйте многотипный одноиндексный запрос. Если одинаковые поля в ваших данных одинаковы по типу/значению (надеюсь, что, если вам нужно скопировать так :)), просто попробуйте. В случае, если он будет медленным/непригодным для использования, вы можете попробовать использовать MongoDB (true polymorhic, hehe), но только с механизмом хранения wiredtiger (в основном, v3 +). К сожалению, версии, предшествующие 3, не относятся к какой-либо hi-perf-агрегации/аналитике. – Slam