【发布时间】:2015-08-27 20:55:26
【问题描述】:
我正在尝试找出某个时间段之间的名称。
但问题是当我尝试运行它时
first-- 它返回选定的名称值 second -- 它返回该期间之间的数据。
现在我想做的是,我想在一个时间段之间搜索名称。
为了进一步解释,假设我们选择了一个名字“john”,并选择了一个日期 2/08/2015 到 27/08/2015, 所以它应该返回该时间段之间的所有名称。
但它返回的是 john 的姓名,而不是在该期间搜索其他文档,其中在搜索日期时也应该使用名称“John”!
如何解决这个问题!
$name = $request->request->get('name');
$strat_date = $request->request->get('strat_date');
$end_date = $request->request->get('end_date');
$params = array(
'index' => "myIndex",
'type' => "myType",
'body' => array(
'query' => array(
'bool' => array(
'must' => array(
// empty should clause for starters
)
)
)
)
);
// add each constraint in turn depending on whether the param is specified
if (!empty($sourceFilter)) {
$params['body']['query']['bool']['must'] = array(
'query_string' => array(
'default_field' => 'name',
'query' => implode(" ", $name)
)
);
}
if (!empty($end_date)) {
$params['body']['query']['bool']['must']['range'] = array(
'datehistory' => array(
"from" => $strat_date,
"to" => $end_date
)
);
}
// special case if none is present, just match everything
if (count($params['body']['query']['bool']['must']) == 0) {
$params['body']['query'] = array(
'match_all' => array()
);
}
$docs = $client->search($params);
但总是返回这样的错误----
{"error":"SearchPhaseExecutionException[执行阶段失败 [查询],所有分片失败;分片失败 {[agEfJ6ltSJmlec3gpnPg3g][myIndex][1]: SearchParseException[[myIndex][1]: from[-1],size[-1]: 解析失败 [解析名称失败 [{\"query\":{\"bool\":{\"must\":{\"query_string\":{\"default_field\":\"name\",\"query\":\" john.se\"},\"range\":{\"datehistory\":{\"from\":1438207200,\"to\":1440626400}}}}}}]]]; 嵌套:QueryParsingException [[myIndex] 没有注册查询 [日期历史]]; }]","状态":400}
【问题讨论】:
标签: php elasticsearch