yii2 elasticsearch 同一字段匹配多关键词解决方案

比如 需要对内容里包含关键词1 关键词2 关键词3   方案:将同一字段缓存到不同es的key中 match_prase是完全包含匹配,match是任意一个有就算   public static function es_search($keywords) { if(!$keywords || !is_array($keywords)) { return []; } $must = []; $i = 1; foreach ($keywords as $v) { if($v) { if($i > 3) { break; } $must[] = ['match_phrase' => ["content".$i => $v]]; $i++; } } $query_arr = [ "bool" => [ "must" => $must ], ]; $limit = count($keywords) > 1 ? 10 : 1000; $res = Es::find()->query($query_arr)->indexBy('member_id')->asArray()->limit($limit)->all(); if($res) { return array_keys($res); } return []; }