2015-03-11 3 views
-2

Я использую ES для своего приложения Laravel, и мне нужно сделать поисковый запрос, который содержит только фильтры и никакого «текстового поиска», но я не уверен, как его записать.Elasticsearch только использует отфильтрованный запрос

Допустим ли это

$query = [ 
    'filtered' => [ 
     'filter'=> [ 
     'bool' => [ 
      'must' => [ 
       [ 'range' => [ 
        'price' => [ 
        'lte' => 9000 
        ] 
       ] 
       ], 
      ], 
     ] 
     ], 
    ], 
]; 

или я должен использовать match_all например:

$query = [ 
    'filtered' => [ 
    'query' => [ 
     'match_all' => [] 
    ], 
     'filter'=> [ 
     'bool' => [ 
      'must' => [ 
       [ 'range' => [ 
        'price' => [ 
        'lte' => 9000 
        ] 
       ] 
       ], 
      ], 
     ] 
     ], 
    ], 
]; 

То, что я хочу, чтобы использовать только отфильтрованный запрос BOOL без текстового поиска.

Заранее благодарен,

+0

Возможный дубликат [Можно использовать только фильтры без текстового поиска в elasticsearch] (http://stackoverflow.com/questions/28989479/is-it-possible-to-only-use-filters-without-text -search-in-elasticsearch) – bittusarkar

ответ

1

Обе версии точно такие же.

+0

Что делает запрос '=> [ ' match_all '=> [] ], do? – user2722667

+0

Он соответствует всем документам, но если вы удаляете 'запрос' и имеете только фильтр, значение все равно не изменяется. – bittusarkar