yii2+;elasticsearch:如何使用';排序';与';查询';搜寻
信息:使用“yiisoft/yii2 elasticsearch”:“2.1.x-dev” 我想使用yii2 elastic执行以下操作: (来自) 当我使用以下选项时:yii2+;elasticsearch:如何使用';排序';与';查询';搜寻,yii2,Yii2,信息:使用“yiisoft/yii2 elasticsearch”:“2.1.x-dev” 我想使用yii2 elastic执行以下操作: (来自) 当我使用以下选项时: $query = [ 'bool' => [ // 'must' => [ // 'match_all' => [] // this throws a diff error //
$query = [
'bool' => [
// 'must' => [
// 'match_all' => [] // this throws a diff error
// ],
'filter' => [
'geo_distance' => [
'distance' => $distance . "km",
'location' => [
'lat' => $lat,
'lon' => $lng
]
]
]
]
];
$sort = [
'geo_distance' => [
'location' => [
'lat' => $lat,
'lon' => $lng
],
'order' => 'asc',
'unit' => 'km'
]
];
$models = Model::find()
->query($query)
->orderBy($sort)
->all();
我得到一个错误:
异常“yii\elasticsearch\Exception”和消息“elasticsearch”
请求失败,代码为400。答复机构:
{“错误”:{“根本原因”:[{“类型”:“非法参数”\u异常”,“原因”:“[field\u sort]
未知字段[位置],分析器不存在
找到“}],“类型”:“非法参数\异常”,“原因”:“[字段\排序]
未知字段[位置],未找到分析器“}”,状态:400}
也许我可以将原始json查询传递给yii2 elasticsearch?还不确定Yi2 elasticsearch库是否能够处理“位置”(地理距离)字段
感谢您的帮助,
gvanto您可以使用
orderBy
方法编写如下内容
MyModel::find()
->query(...)
->orderBy([
'post_date' => SORT_ASC,
'name' => SORT_DESC
])
->all()
谢谢Vladimir试过了,没用。。。最后我用guzzle做了一个纯粹的卷曲呼叫。。。
MyModel::find()
->query(...)
->orderBy([
'post_date' => SORT_ASC,
'name' => SORT_DESC
])
->all()