我是很新的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',
),
),
),
),
),
),
),
),
)