您的位置:首页 > 编程语言 > PHP开发

yii2.0 elasticsearch模糊查询

2017-07-10 15:54 423 查看
 最近使用yii2.0查询es数据,一般查找语句用的yii2.0的query类,遇到模糊查询使用like的时候竟然报

like conditions are not supported by elasticsearch.

在QueryBuilder.php中查找到这个函数

private function buildLikeCondition($operator, $operands)
{
throw new NotSupportedException('like conditions are not supported by elasticsearch.');

}
修改此函数为:

private function buildLikeCondition($operator, $operands)
{
if (!isset($operands[0], $operands[1])) {
throw new InvalidParamException("Operator '$operator' requires two operands.");
}
if($operator=="like"){
return [
'regexp' => [
$operands[0]=>".*".$operands[1].".*",
],
];
}else{
throw new NotSupportedException('like conditions are not supported by elasticsearch.');
}
}
解决了like模糊查询,用到了正则匹配语句。暂时解决了项目模糊查询的需要。用正则”regexp“应该还可以用wildcards查询,后者没用过,用过再补上


                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: