Elasticsearch查询字符串中的空值

时间:2015-02-24 19:49:08

标签: php mysql search laravel elasticsearch

我在Laravel应用程序中使用ES来搜索表格/类型。

我的用户可以搜索总共5列,这意味着总共可以有31个查询组合。

所以我现在的问题是,如果我可以使用相同的查询但不提供ES所有的seach参数。或以某种方式编写动态查询。

例如:

'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。

提前致谢

1 个答案:

答案 0 :(得分:0)

您可以使用Elasticquent

Elasticquent通过将它们映射到Elasticsearch类型,可以更轻松地使用Elasticsearch和Eloquent模型。您可以使用默认设置或定义Elasticsearch如何在模型中索引和搜索您的Eloquent模型。

Elasticquent使用官方Elasticsearch PHP API。首先,您应该具备Elasticsearch如何工作的基本知识(索引,类型,映射等)。

https://github.com/adamfairholm/Elasticquent