Я ищу способ поиска по нескольким индексам одновременно с помощью Elastica.
У меня есть индекс products
и индекс user
.
products
содержит {product_id, product_name, price}
, а user
содержит {product_id, user_name, date}
. Зная, что product_id
в обоих случаях одинакова, в products
каждый products_id
уникален, а в user
— нет, поскольку пользователь может покупать один и тот же продукт несколько раз.
В любом случае, я хочу автоматически получать цену продукта из индекса products
при поиске по индексу user
.
Я знаю, что мы можем искать по нескольким индексам так (поправьте меня, если я ошибаюсь):
$search = new \Elastica\Search($client);
$search->addIndex('users')
->addType('user')
->addIndex('products')
->addType('product');
Но проблема в том, что когда я пишу агрегацию, например, для products_id
, а затем создаю новый запрос с некоторыми фильтрами:
$products_agg = new \Elastica\Aggregation\Terms('products_id');
$products_agg->setField('products_id')->setSize(0);
$query = new \Elastica\Query();
$query->addAggregation($products_agg);
$query->setQuery($bool);
$search->setQuery($query);
Как эластика узнает, в каком индексе искать? Как я могу связать этот products_id
с другим индексом?