2016-05-31 2 views
2

Учитывая пример пользователя и документы продукта ниже:Как фильтровать запрос, используя другой запрос в ElasticSearch

{ 
    "_id": "1", 
    "_type": "user", 
    "_source": { 
    "id": "1", 
    "following": ["2", "3", ... , "10000"] 
} 

{ 
    "_id": "1", 
    "_type": "product", 
    "_source": { 
    "id": "1", 
    "owner_id": "2" 
} 

{ 
    "_id": "2", 
    "_type": "product", 
    "_source": { 
    "id": "2", 
    "owner_id": "10001" 
} 

Я хочу, чтобы получить продукты, которые принадлежат пользователям, которые следуют пользователь с идентификатором = 1. Я не хочу делать 2 разных запроса (сначала для получения пользователей, за которыми следует идентификатор пользователя = 1, а затем второй для получения продуктов), поскольку идентификатор пользователя = 1 соответствует ~ 10000 пользователям.

Есть ли способ получить результат, используя только один запрос?

+0

No. Вы хотите внутреннее соединение. Это невозможно в ES. Другие варианты: https://www.elastic.co/guide/en/elasticsearch/guide/current/relations.html –

ответ

Смежные вопросы