В вашем случае это легко.Поскольку вы никогда не получите дубликаты компании, потому что у вас есть только документ на компанию, вы можете просто выполнить прямой поиск.Пример:
GET yourindex/_search
{
"query": {
"bool": {
"must_not": [
{"range": {
"employee.age": {
"gt": 30
}
}}
]
}
}
}
Стоит отметить, что если вы когда-нибудь захотите выполнить поиск, объединяющий поля сотрудников, вы можете столкнуться с проблемами.Например, если вы хотите найти все компании, в которых есть сотрудник с age < 30 AND gender=MALE
, эта модель не работает.По умолчанию ElasticSearch обрабатывает все поля как независимые.Это означает, что запрос будет возвращать любые компании, в которых есть хотя бы один сотрудник MALE и один сотрудник в возрасте до 30 лет.Вы не сможете сказать, что они должны быть одним и тем же человекомЕсли вам нужно выполнить эти типы запросов, вам нужно будет просмотреть вложенных отображений и запросов, что немного изменит запрос выше.
Подробности: https://www.elastic.co/guide/en/elasticsearch/reference/current/nested.html