2015-02-24 105 views
0

我爲我的Laravel應用程序使用ES以搜索表格/類型。Elasticsearch查詢字符串中的空值

我的用戶可以搜索總共5列,這意味着總共可以有31個查詢組合。

所以我的問題是現在,如果我可以使用相同的查詢,但不提供ES所有的搜索參數。或者以某種方式編寫動態查詢。

如:

'filtered' => [ 
    'query' => [ 
    'match' => ['title' => Input::get('query')] 
    ], 
    'filter'=> [ 
    'bool' => [ 
     'must' => [ 
     ['term' => [ 'type' => 1] ], 
     ['term' => [ 'state' => 22] ], 
     ['term' => [ 'city' => ] ], (empty) 
     [ 
      'range' => [ 
      'price' => [ 
       'gte' => , (empty) 
       'lte' => , (empty) 
      ] 
      ] 
     ] 
     ] 
    ] 
    ], 
], 

否則我必須寫31個不同的這個查詢的組合 - 如果ES不要有任何可以幫助我。我可以使用Laravels雄辯的ORM。

在此先感謝

回答

0

您可以更容易通過映射他們Elasticsearch類型使用Elasticquent

Elasticquent使得與Elasticsearch和雄辯的模型工作。您可以使用默認設置,或者定義Elasticsearch應該如何在模型中正確索引和搜索Eloquent模型。

Elasticquent使用官方的Elasticsearch PHP API。要開始,您應該對Elasticsearch的工作原理(索引,類型,映射等)有一個基本的瞭解。

https://github.com/adamfairholm/Elasticquent

+0

我正在使用那個包。但它不像ORM口才。 $ books = Book :: searchByQuery(array('match'=> array('title'=>'Moby Dick'))); 用戶可以通過過濾5個不同的值來搜索/過濾產品。如果我會匹配每種類型的組合,這意味着我將不得不編寫31個組合/查詢並僅使用所需的組合 – user2722667 2015-02-24 21:01:19