elasticsearch,Php,elasticsearch" /> elasticsearch,Php,elasticsearch" />

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
函数需要根据您得到的查询字符串构建上述查询。我想从那以后就很简单了。

谢谢,所以,应该是类似于“或”和“必须”是“和”