2016-10-18 91 views
0

Im在Eloquent模型上使用Elasticsearch與laravel和Elasticquent https://github.com/elasticquent/Elasticquent。 我的項目的每個用戶都可以搜索不同的對象結果。 我有例如Elasticsearch在不同結果中搜索

$user_books->addToIndex(); 
Books::search($search); 

而問題是,每次當有人去當前步驟的elasticsearch在結束我對他們的書籍的,各用戶綜合作用的結果充滿了他的results.And。這是一個問題。 我需要一個用戶只搜索他的結果。 我該如何做到這一點?我認爲我可能必須在搜索後刪除索引,因爲我不再需要它們。

然後

回答

0

沒有必要刪除您的索引, 相反,你應該指數構建自定義索引 他們USER_ID像這樣由用戶添加的書: -

$data = [ 
     'body' => [ 
      'book' => '$book->name', 
      'user_id' => Auth::user()->id, 

     ], 
     'index' => 'your application name', 
     'type' => 'books', 
     'id' => $book->id, 
    ]; 

然後您可以使用自定義查詢來搜索屬於該用戶的圖書,只有像這樣

$books = Book::searchByQuery(array('match' => array('user_id' => Auth::user()->id))); 

參考基於查詢的索引和映射部分here