2016-02-27 3 views
0

Я хочу передать вложенный запрос в elasticsearch с моего контроллера laravel. мой простой запрос, какКак передать поисковый запрос на поиск elastics от контроллера laravel?

Простой запрос

$params = [ 
      'index' => 'my_index', 
      'type' => 'product', 
      'body' => [ 
        'query'=>[ 
         'match'=>[ 
          'title'=>'first' 
         ] 
        ] 
       ] 
      ]; 
     $response = \Es::Search($params); //passing query from here 

Он работает идеально.

Как передать следующий вложенный запрос в \Es::Search($params);?

Мои Вложенные запросы:

{ 
"query": { 
    "nested": { 
     "path": "sku", 
     "query": { 
     "bool": { 
      "must": [ 
      { "match": {"sku.price": "50"}} 
      ] 
     } 
     } 
    } 
    } 
} 

Я новичок в elasticsearch поэтому, пожалуйста, дать некоторые предложения.

ответ

1

Вы можете передать вложенное поисковый запрос, как:

$params = [ 
     'index' => 'my_index', 
     'type' => 'product', 
     'body' => [ 
       'query'=>[ 
       'nested'=> [ 
        'path'=> 'category', 
         'query'=> [ 
          'bool'=> [ 
           'must'=> [ 
            'match'=>[ 
             'category.title'=> $catagory 
            ] 
           ] 
          ] 
         ] 
        ] 
       ] 
      ] 
     ]; 
    $response = \Es::Search($params); 

Надеюсь, что это поможет.

1

вы можете передать вложенный запрос, как показано ниже

$params['size'] = $per_page; 
     $params['from'] = $from; 
     $params['index'] = config('elastic.Admin_Logs'); 
     $params['type'] = config('elastic.Admin_Type'); 
     $params['body']['sort']['meta.datetime']['order'] = "desc"; 
     $params['body']['query']['filtered']['filter']['bool']['must'][]['match_all'] = []; 

      $params['body']['query']['filtered']['filter']['bool']['must'][]['match']['_id'] = $id; 


      $params['body']['query']['filtered']['filter']['bool']['must'][]['range']['exceptions.count']['gt'] = 0; 

      $params['body']['query']['filtered']['filter']['bool']['must'][]['range']['meta.datetime']['gte'] = $startdate; 
      $params['body']['query']['filtered']['filter']['bool']['must'][]['range']['meta.datetime']['lte'] = $enddate; 

     $response = $client->search($params); 
+0

Здравствуй сэр , в вашем ans вы передали $ params ['size'] = $ per_page, $ params ['from'] = $ from для разбивки на страницы. В том, где вы устанавливаете $ from и $ per_page и как вы показываете ссылку на страницы на странице просмотра? вы можете ответить на мой вопрос http://stackoverflow.com/questions/35719728/pagination-in-alyicsearch-laravel? –

+0

$ per_page = $ request-> get ('limit', 10); $ from = ($ request-> get ('page', 1) - 1) * $ per_page; –

+0

Проверить выше ответ –

0

В контроллере IAM использования Laravel lengthaware метода Paginator для пагинации

public function getIndex(Request $request) 
    { 
     $per_page = $request->get('limit', 10); 
      $from = ($request->get('page', 1) - 1) * $per_page; 

    $params['size'] = $per_page; 
      $params['from'] = $from; 
      $params['index'] = config('elastic.Admin_Logs'); 
      $params['type'] = config('elastic.Admin_Type'); 
      $params['body']['sort']['meta.datetime']['order'] = "desc"; 
      $params['body']['query']['filtered']['filter']['bool']['must'][]['match_all'] = []; 

       $params['body']['query']['filtered']['filter']['bool']['must'][]['match']['_id'] = $id; 


       $params['body']['query']['filtered']['filter']['bool']['must'][]['range']['exceptions.count']['gt'] = 0; 

       $params['body']['query']['filtered']['filter']['bool']['must'][]['range']['meta.datetime']['gte'] = $startdate; 
       $params['body']['query']['filtered']['filter']['bool']['must'][]['range']['meta.datetime']['lte'] = $enddate; 

      $response = $client->search($params); 
      $access = $response['hits']; 
      $admin_exceptions = new LengthAwarePaginator(
      $access['hits'], 
      $access['total'], 
      $per_page, 
      Paginator::resolveCurrentPage(), 
      ['path' => Paginator::resolveCurrentPath()]); 
     return view('adminexception.index', compact('admin_exceptions')); 
} 

В вашем использовании лезвия метод визуализации

{!! $ admin_exceptions-> Render() !!}

+0

Я получаю ошибку, например, Class Modules \ Catalog \ Http \ Controllers \ Request не существует в этой строке $ per_page = $ request-> get ('limit', 10); –

+0

Я использую laravel 5.1 –

+0

Я получаю Class 'Modules \ Catalog \ Http \ Controllers \ LengthAwarePaginator' не найдена ошибка –

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