我的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。
提前感谢
您可以使用Elasticquent
Elasticquent通过将Elasticsearch和Eloquent模型映射到Elasticsearch类型,使其更容易使用。您可以使用默认设置,也可以定义Elasticsearch应该如何在模型中索引和搜索Eloquent模型。
Elasticquent使用官方的Elasticsearch PHP API。首先,您应该了解Elasticsearch的工作原理(索引、类型、映射等)。
https://github.com/adamfairholm/Elasticquent