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

Elasticsearch(PHP)多范围过滤器问题

Elasticsearch(PHP)多范围过滤器问题,php,elasticsearch,Php,elasticsearch,我是Elasticsearch的新手,如果这是一个明显的问题,我深表歉意 我正在使用PHP库,并试图跨索引执行非常简单的查询。我唯一想做的就是对创建映射时设置为日期类型的两个日期(visible_from和visible_to)执行筛选 我正在代码中构建一个过滤查询,结果如下所示: array ( 'index' => 'site', 'from' => 0, 'size' => 10, 'body' => array ( 'query' =

我是Elasticsearch的新手,如果这是一个明显的问题,我深表歉意

我正在使用PHP库,并试图跨索引执行非常简单的查询。我唯一想做的就是对创建映射时设置为日期类型的两个日期(visible_from和visible_to)执行筛选

我正在代码中构建一个过滤查询,结果如下所示:

array (
  'index' => 'site',
  'from' => 0,
  'size' => 10,
  'body' => 
  array (
    'query' => 
    array (
      'filtered' => 
      array (
        'filter' => 
        array (
          'and' => 
          array (
            'range' => 
            array (
              'visible_from' => 
              array (
                'lt' => '2014-06-09 09:06:47',
              ),
              'visible_to' => 
              array (
                'gt' => '2014-06-09 09:06:47',
              ),
            ),
          ),
        ),
        'query' => 
        array (
          'match' => 
          array (
            '_all' => 'example',
          ),
        ),
      ),
    ),
  ),
)
这导致抛出一个BadRequest400Exception——在异常的内容中,我可以看到Elasticssearch所说的

QueryParsingException[[site] [and] filter does not support [lt]]
如果我移除AND过滤器,只对其中一个日期执行范围过滤器,那么它工作得很好,我就是无法让它与AND过滤器一起工作


提前感谢您的帮助

尝试下面的查询,尝试不同的小于和大于日期

array
(
    "query" => array
    (
    "filtered" => array
    (
        "query" => array
        (
            "match" => array(
                 '_all' => 'example',
                ),
             ),

            "filter" => array
            (
                "and" => array
                (
                    "filters" => array
                    (
                        "0" => array
                        (
                            "range" => array
                            (
                                "ID" => array
                                (
                                "gt" => '2014-06-09 09:06:47',
                                ),
                            ),
                        ),
                        "1" => array
                        (
                            "range" => array
                            (
                                "ID" => array
                                (
                                    "lt" => '2014-06-09 09:06:47',
                                ),
                            ),
                        ),
                    ),
                ),
            ),
        ),
    ),
)   

那很有帮助,谢谢。我不得不用“ID”代替我的属性,但是过滤器数组的使用起了作用。非常感谢!很高兴知道它对您有效:)您可以使用
visible\u to
visible\u from
也可以<在我的示例中,code>ID是一个字段名。