rrader  
                (rrader)
               
                 
              
                  
                    August 2, 2017, 12:47pm
                   
                   
              1 
               
             
            
              In Elaasticsearch we have 3 collections, users, products and blocked_users.
users{id, first_name, last_name, ...}
products{id, user_id, title, ...}
blocked_users{user_id, blocked_user_id}
 
I want to search products by title, but I don't want to show products oof blocked users.
How should be query?
             
            
               
               
               
            
            
           
          
            
              
                dadoonet  
                (David Pilato)
               
              
                  
                    August 2, 2017,  1:06pm
                   
                   
              2 
               
             
            
              You can't really do "joins" in elasticsearch.
You may want to look at parent/child feature but that's not may be straightforward.
I think it would be better to have a single data structure products like:
PUT products/doc/1
{
  "title": "Title",
  "user": {
    "first_name": "First",
    "last_name": "Last",
    "blocked": true
  } 
}
 
             
            
               
               
               
            
            
           
          
            
              
                rrader  
                (rrader)
               
              
                  
                    August 2, 2017,  1:42pm
                   
                   
              3 
               
             
            
              But for some users it can be blocked, and for others they will be not blocked, it depends if logged user blocked product's user.
             
            
               
               
               
            
            
           
          
            
              
                dadoonet  
                (David Pilato)
               
              
                  
                    August 2, 2017,  2:28pm
                   
                   
              4 
               
             
            
              Can you give an example with the model you sent?
users{id, first_name, last_name, ...}
products{id, user_id, title, ...}
blocked_users{user_id, blocked_user_id}
 
             
            
               
               
               
            
            
           
          
            
              
                rrader  
                (rrader)
               
              
                  
                    August 2, 2017,  2:44pm
                   
                   
              5 
               
             
            
              user[ 
{id: 1, first_name: "John", last_name:"Snow", ...} 
{id: 2, first_name: "Sarah", last_name:"Connor", ...} 
{id: 2, first_name: "Arnold", last_name:"Schwarzenegger", ...} 
]
products[ 
{id: 1, user_id: 3, title:"Apple"} 
]
blocked_users[ 
{user_id: 2, blocked_user_id: 3} // this mean user with id 2 blocked user with id 3 
]
so, when user with id 1 search he will get a response with 1 product 
when user with id 2 search 0 products is expected, because product user id is 3, but user with id 2 blocked this user
             
            
               
               
               
            
            
           
          
            
              
                dadoonet  
                (David Pilato)
               
              
                  
                    August 5, 2017,  9:29pm
                   
                   
              6 
               
             
            
              Would that work then?
PUT products/doc/1
{
  "title": "Title",
  "user": {
    "id": "3",
    "first_name": "First",
    "last_name": "Last",
    "blocked_users": [ "2" ]
  } 
}
 
Which basically means that as user 2, I won't see that product as I blocked all the products that created user 3.
             
            
               
               
               
            
            
           
          
            
              
                system  
                (system)
                  Closed 
               
              
                  
                    September 2, 2017,  9:29pm
                   
                   
              7 
               
             
            
              This topic was automatically closed 28 days after the last reply. New replies are no longer allowed.