Php elasticsearch查询中的多个范围
我想查询一下Php elasticsearch查询中的多个范围,php,
elasticsearch,Php,
elasticsearch,我想查询一下where price>555和price33 我有如下疑问: $query = array( 'query' => queryFilters($filters), 'sort' => array($sortOrder[0] => $sortOrder[1], 'updated_at' => 'desc'), 'from' => ($page - 1) * $pageSize,
where price>555和price<5555和quantity>33
我有如下疑问:
$query = array(
'query' => queryFilters($filters),
'sort' => array($sortOrder[0] => $sortOrder[1], 'updated_at' => 'desc'),
'from' => ($page - 1) * $pageSize,
'size' => $pageSize,
);
现在,假设我的过滤器如下所示:
filter[price_from]=555&filter[price_to]=5555&filter[quantity_from]=33
queryFilters($filters)
的结果应该是什么?
我尝试从中筛选查询,但结果是like or(使用了范围数组:0=>range[…],1=>range[…],2=>range[…])
,但结果是like or查询。有什么建议吗?
我将有
query=>constant\u score=>filter=>exists=>field[items]
和[missing](相同结构)作为queryFilters($filters)
的结果。只为一个(价格gte,lte)
使用范围
效果很好,但不能用于多个字段(价格,数量)
您基本上需要这样的东西,使用bool/must
和两个范围
过滤器:
{
"query": {
"filtered": {
"filter": {
"bool": {
"must": [
{
"range": {
"price": {
"gt": 555,
"lt": 5555
}
}
},
{
"range": {
"quantity": {
"gt": 33
}
}
}
]
}
}
}
}
}
因此,您的
queryFilters
函数需要根据您得到的查询字符串构建上述查询。我想从那以后就很简单了。谢谢,所以,应该是类似于“或”和“必须”是“和”