1、首先我們要把對應的分詞器的版本下載下來,網址是:https://github.com/medcl/elasticsearch-analysis-ik/releases
2、將下載下來的壓縮包解壓,然后將文件復制到 es的安裝目錄/plugin/ik下面即可,沒有的目錄直接手動創建就行,完成之后效果如下

3、接下來,重新啟動es就可以了
4、應用 - 創建索引
public function create_index(){ //創建es實例 $es = ClientBuilder::create()->setHosts(['127.0.0.1:9200'])->build(); $params = [ 'index' => '索引名稱',//類似於庫名 'body' => [ 'settings' => [ 'number_of_shards' => 3, 'number_of_replicas' => 2 ], 'mappings' => [ '_source' => [ 'enabled' => true ], 'properties' => [
//之后可以進行搜索的字段 '字段名稱' => [ 'type' => 'text', "analyzer" => "ik_max_word", "search_analyzer" => "ik_max_word" ] ] ] ] ]; //執行創建 $r = $es->indices()->create($params); dump($r); }
5、可以給索引中填充一些數據
public function add_goods_data(){ $data = GoodsModel::select(); $arr = (new Collection($data))->toArray(); $es = ClientBuilder::create()->setHosts(['127.0.0.1:9200'])->build(); foreach ($arr as $k=>$v){ $params = [ 'index'=>'goodslists_index',//庫 'type'=>'_doc',//表(額外需要注意的,這里是固定的寫法) 'id'=>$v['id'],//主鍵 'body'=>$v//數據 ]; $r = $es->index($params); } echo 'success'; }
6、應用 - 搜索
public function search_test(){ $word = input('word');//接收關鍵字 $page = input('page',1);//接收當前頁(如果沒接收到,默認是1) $size = 5;//每頁顯示條數 $limit = ($page-1)*$size;//偏移量 $client = ClientBuilder::create()->setHosts(['127.0.0.1:9200'])->build();//創建es實例 //設置查詢的條件 $params = [ 'index' => 'goodslists_index',//索引(類似於庫) //'type' => '_doc', 'body' => [ //查詢內容 'query' => [ 'match' => [//匹配 'goods_name' => $word//匹配字段 ] ], 'highlight' => [//高亮 'pre_tags' => ["<em style='color: red'>"],//樣式自己寫 'post_tags' => ["</em>"], 'fields' => [ "goods_name" => new \stdClass() ] ] ] ]; //分頁限制 $params["size"] = $size;//每頁顯示條數 $params["from"] = $limit;//偏移量 $results = $client->search($params);//es搜索 foreach ($results['hits']['hits'] as $k=>$v){ $results['hits']['hits'][$k]['_source']['goods_name'] = $v['highlight']['goods_name'][0]; } $data = array_column($results['hits']['hits'],'_source'); $arr['data'] = $data;//數據 $arr['page'] = $page;//當前頁 $arr['total'] = $results['hits']['total']['value'];//總條數 $arr['last_page'] = ceil($results['hits']['total']['value']/$size);//總頁數 print_r($arr);//剩下的就是前端展示的事情了 }
