elasticsearch,Php,Mysql,Search,Laravel,elasticsearch" /> elasticsearch,Php,Mysql,Search,Laravel,elasticsearch" />

Php Elasticsearch查询字符串中的空值

Php Elasticsearch查询字符串中的空值,php,mysql,search,laravel,elasticsearch,Php,Mysql,Search,Laravel,elasticsearch,我正在为我的Laravel应用程序使用ES搜索表格/类型 我的用户总共可以搜索5列,这意味着总共可以有31个查询组合 所以我现在的问题是,我是否可以使用相同的查询,但不向ES提供所有搜索参数。或者以某种方式编写动态查询 例如: 否则,我必须写出31种不同的查询组合——如果ES没有任何东西可以帮助我的话。我可以用Laravels雄辩的ORM来做这个 提前感谢您可以使用Elasticquent Elasticquent通过将Elasticsearch和雄辩模型映射到Elasticsearch类型,使

我正在为我的Laravel应用程序使用ES搜索表格/类型

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

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

例如:

否则,我必须写出31种不同的查询组合——如果ES没有任何东西可以帮助我的话。我可以用Laravels雄辩的ORM来做这个


提前感谢

您可以使用
Elasticquent

Elasticquent通过将Elasticsearch和雄辩模型映射到Elasticsearch类型,使使用Elasticsearch和雄辩模型变得更容易。您可以使用默认设置,或定义Elasticsearch应如何索引和搜索模型中的雄辩模型

Elasticquent使用官方的Elasticsearch PHP API。首先,您应该了解Elasticsearch的工作原理(索引、类型、映射等)


我正在使用这个软件包。但它不像ORM那样能说会道$books=Book::searchByQuery(数组('match'=>array('title'=>'Moby Dick'));用户可以通过筛选5个不同的值来搜索/筛选产品。如果我匹配每种类型的组合,这意味着我必须编写31个组合/查询,并且只使用所需的组合/查询
'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)
             ]
           ]
         ]
       ]
     ]
  ],
],