ElasticSearch поиск по многим типам - PullRequest
1 голос
/ 04 июля 2011

Я использую Rails с гемом Tire (для ElasticSearch), и мне нужно искать по нескольким моделям.Что-то вроде:

# title is a field in all models
Tire.search :tasks, :projects, :posts, { :title => "word" } 

Я знаю, что могу искать модели по очереди, а затем обрабатывать эти результаты, но это не нужно, учитывая, что ElasticSearch (Lucene) ориентирован на документы.

Спасибо,

1 Ответ

1 голос
/ 04 июля 2011

Одна из возможностей состоит в том, чтобы рассматривать их не как отдельные модели. Составная модель может состоять в том, что каждый документ может быть элементом, принадлежащим одной или нескольким различным подмоделям, идентифицированным строковой константой, которая может быть многозначной.

Если вы хотите получить результаты только от одной из этих подмоделей, вы можете добавить к запросу фиксированную часть, которая идентифицирует набор документов, принадлежащих этой подмодели.

Единственное предостережение: вам нужен первичный ключ, который является уникальным (что не так уж и плохо, потому что вы можете использовать что-то вроде неявного ключа документа).

...