我正在使用ES作为我的Laravel应用程序。
我想要做的是搜索过滤。
我在标题字段上进行全文搜索,然后检查价格是否在0 - 9999之间,并且该活动设置为1。
但这两个查询似乎都能正常运行我的测试数据。但它们之间有什么区别?订单“查询”是否会发挥任何差异?
忽略语法,只需查看查询结构。
首次查询
'filtered' => [
'query' => [
'match' => ['title' => Input::get('query')]
],
'filter'=> [
'bool' => [
'must' => [
['term' => [ 'active' => 1] ],
[ 'range' => [
'price' => [
'gte' => 1,
'lte' => 99999,
]
]
]
]
]
],
],
第二次查询
'filtered' => [
'filter' => [
'bool' => [
'must' => [
['term' => [ 'status' => 1] ],
[
'range' => [
'price' => [
'gte' => 1,
'lte' => 99999,
]
]
]
]
]
],
'query' => [
'match' => [
'title' => Input::get('query', '')
]
]
]
提前致谢。
答案 0 :(得分:3)
在filter
中提及query
和filtered query
的顺序完全没有区别。首先为文档执行query
或filter
的内容取决于strategy
filtered query
的专家级可选字段。有关详细信息,请阅读this。