У меня есть две сущности Торговец и Клиент:
public class Merchant{
private UUID id;
private String name;
//... other fields and getters/setters
}
public class Customer{
private UUID id;
private String name;
//... other fields and getters/setters
}
Эти две сущности заметно отличаются друг от друга.
То, что я пытаюсь сделать, это когда я ищу стермин «Джон». Я хочу получить как торговца по имени «Джон Маркет», так и покупателя по имени «Джон Смит».
Для этого я проиндексировал эти объекты в единый индекс.
@Document(indexName = "merchant_customer_index", type = "merchantorcustomer")
public class MerchantOrCustomer {
@Id
private UUID id;
private String name;
private int type;
//...
Мой запрос может возвращать как Merchant, так и Customer:
List<MerchantOrCustomer> result = elasticsearchTemplate.queryForList(nativeSearchQuery, MerchantOrCustomer.class);
Я различаю их программно (if(result.get(i).getType() == 0
мы получили Merchant else
Customer) Затем использую их id для извлечения фактического объекта из реляционной базы данных.
Я много искал, но не смог найти ничего, что могло бы помочь оценить, является ли это хорошей практикой.Это хорошая практика?
Пожалуйста, дайте мне подсказку, если есть лучший способ.