Много ко многим отношениям вasticsearch
Я знаю, что в эластичном поиске мы можем иметьотношения ребенка / родителя между документами.
И затем, при индексации, я могу передать родительский идентификатор, чтобы дочерний и родительский документы были связаны:
$ curl -XPUT localhost:9200/blogs/blog_tag/1122?parent=1111 -d '{ "tag" : "something"}'
Есть ли способ моделировать отношения «многие ко многим» в эластичном поиске?
Данные хранятся в базе данных MySQL со следующей схемой:
account
========
id
name
some_property
group
========
id
name
description
account_group
=============
account_id
group_id
primary_group //This is 1 or 0 depending on whether the group is the primary group for that account.
В настоящее время это мое отображение дляaccount
(прошу прощения за обозначение массива, я используюэластическая ткань в PHP, чтобы поговорить с моим сервером Flexiblesearch):
**Mapping for account**
'name' => array(
'type' => 'string'),
'some_property' => array(
'type' => 'string'),
'groups' => array(
'properties' => array(
'id' => array('type' => 'integer'),
'primary' => array('type' => 'boolean')
)
),
**Mapping for group**
'name' => array(
'type' => 'string'),
'description'=> array(
'type' => 'string')
Проблема с этим подходом состоит в том, что если группа удаляется из индекса, мне нужно будет пройти через каждую учетную запись и удалить идентификатор группы из каждой учетной записи. Это кажется мне немного неэффективным. Я также предполагаю, что это не будет проблемой при использовании дочерних / родительских отношений эластичного поиска.
Есть ли способ моделировать отношения «многие ко многим» в эластичном поиске?