2015-06-06 3 views
1

Я создаю сайт для дилеров автомобилей. И я пытаюсь использовать elasticsearch для моего поиска. Но я не понимаю отношения в поиске elastics. i Cars, Car_Options, Brand, City столы. Я храню некоторые метаданные в таблице Car_Options. Обычно в MySQL мои таблицы нравится:Elasticsearch Отношения на Laravel

Car Table : 
id , name , brand_id , price , city_id 

Car_Options Table : 
id , car_id , name , value 

Brand Table : 
id , name 

City Table : 
id , name 

я пытался использовать этот пакет для elasticsearch: iverberk/larasearch. Я могу индексировать мою таблицу Cars (Model), и я могу выполнить поиск в этой таблице. Но я не мог понять, как получать связанные данные из других таблиц. Я читал об отношениях на elasticsearch, но я не мог его реализовать. Некоторые из них рассказывают об индексировании их в один документ. некоторые из них рассказывают о пути родителя/ребенка. Итак, моя проблема заключается в том, что я не понимаю, как индексировать отношения по эластичному поиску и как их искать.

i индексированные автомобили и ссылки, чтобы попытаться, но я не смог достичь истинного результата. я сделал несколько попыток, как:

return Car::search('NewYork', ['fields' => ['city.name']])->getResults(); 

Ожидание справки о логике! каким образом я должен следовать? как я должен индексировать их отношениями?

Спасибо!

ответ

0

Сила базы данных NoSQL, такой как ElasticSearch, заключается в том, что никто не заставляет вас делать сложные транзакции, чтобы избежать дублирования данных.

Это означает, что лично, если единственное, что вам нужно сохранить в модели автомобиля, это название города, просто сохраните его там.

Я действительно считаю, что быстрее и эффективнее дублировать некоторые данные, чем делать 2 вызова, один для модели автомобилей и еще один для родственного города.

+0

У меня есть табло, стол города, таблица car_properties. они слишком много:/и я обычно использую таблицу mysql, как можно индексировать эту 4 таблицу в один документ? –

Смежные вопросы