Это зависит.
Иногда зеркалирование вашей базы данных Таблицы в Elasticsearch имеет смысл.Например, если вы хотите, чтобы пользователи могли самостоятельно осуществлять поиск по списку питательных веществ и по списку продуктов, лучше всего иметь два указателя Elasticsearch.
Тем не менее, как это звучит, как вы хотите, ичаще встречается в мире Elasticsearch, это объединение данных из разных таблиц при индексации в Elasticsearch.Из-за того, как работает полнотекстовый поиск, вы часто хотите денормализовать ваши данные.Денормализация, как правило, является антипаттерном в мире реляционных баз данных, но часто является наилучшей практикой для Elasticsearch.
Вот пример, если вы хотите, чтобы пользователи могли искать продукты, содержащие различные питательные вещества, вы можете захотетьИндексируйте свои документы по продукту следующим образом:
#change host to reflect your Elasticsearch server
curl -XPUT 'http://localhost:9200/products/_doc/1' -d '{
"name": "Banana",
"nutrients": ["potassium", "vitamin C", "copper"]
}'
curl -XPUT 'http://localhost:9200/products/_doc/2' -d '{
"name": "Rice",
"nutrients": ["manganese", "copper"]
}'
curl -XPUT 'http://localhost:9200/products/_doc/3' -d '{
"name": "Orange",
"nutrients": ["Vitamin C", "Thiamin"]
}'
Прошу прощения за мои неудачные попытки получить информацию о питании
Как видите, названия питательных веществ часто дублируются.Однако этот подход позволяет использовать возможности полнотекстового поиска Elasticsearch для поиска любого элемента, который имеет желаемое питательное вещество.
Возможно, вы захотите повторно использовать идентификаторы из своей реляционной базы данных для своих продуктов в Elasticsearch (или магазинеих в другом поле), чтобы вы могли вернуться к «источнику» ваших данных для получения дополнительной информации.