#c# #sql-server #elasticsearch #microservices
#c# #sql-сервер #elasticsearch #микросервисы
Вопрос:
У меня есть два микросервиса, один из которых называется Home, содержит метаданные о доме, включая FK, из другого микросервиса с именем Address
Я использую SQL Server для хранения записей сущностей
-
HomeEntity(представляет таблицу в БД) в домашней микросервисе содержит столбцы
->
Id, AddressId(FK), price
-
Адресность (представляет таблицу в БД) в адресной микросервисе содержит столбцы
->
Id, Street, ZipCode
Я использую эластичный поиск для хранения адреса в отдельном индексе в домашнем микросервисе, и этот индекс всегда обновляется, поскольку адрес MS публикует сообщение об изменении или добавлении адреса.
И у меня есть Get
endpoint API в домашнем микросервисе, он должен возвращать что-то вроде
Home : {
Id: 1,
price : 3000,
Address :{
id: 1,
street: "blabla",
zibcode : 12345
}
}
Поэтому я сохранил их агрегированными в другом индексе в эластичном поиске под названием HomeIndex
Моя проблема, когда один из адресов обновляется, как лучше всего обновлять все документы, прикрепленные к одному и тому же адресу HomeIndex.
в настоящее время я использую _update_by_query есть ли какой-нибудь способ обновлять HomeIndex с последними изменениями адреса?
Комментарии:
1. для меня _update_by_query — лучшая практика для вашего варианта использования. У вас будет очень мало домов с одинаковым адресом, поэтому обновление по запросу должно быть очень быстрым
2. У меня есть другой случай с тем же сценарием, но это может повлиять на 100k или более документов в индексе!
3. Вы можете, если ваш вариант использования действительно совпадает, подумать о родительском дочернем элементе. Обычно это не очень хорошая практика. Но если у вас большая мощность и много обновлений на неправильной стороне, это может быть хорошим решением elastic.co/guide/en/elasticsearch/client/net-api/current /…