Elasticsearch是一個基於Lucene,提供了一個分布式多用戶能力的全文搜索引擎。其他就不多說了,官方文檔有詳細的介紹。
我自己是在CentOS 7.0安裝的
Elasticsearch 是在Elasticsearch官網下載的最新版本 5.3 https://www.elastic.co/cn/
Elasticsearch 不需要安裝,自己解壓后運行就可以了 切換到解壓后的bin目錄。/path/elasticsearch-5.3.0/bin/
./elasticsearch 前台運行
./elasticsearch -d 后台運行
成功運行要確保Linux 系統安裝了Java環境,因為Es是Java開發的 5.3 需要Java1.8及以上版本
Java環境安裝,可以下載源碼包編譯安裝,也可以yum 安裝,我是yum安裝的,yum安裝首先可以搜索openjdk
找到x86_64對應的安裝包 java-1.8.0-openjdk.x86_64 : OpenJDK Runtime Environment, 安裝
一切就緒,能得到這樣的json數據就表示成功了
我用的Yii2.0框架,下載 elasticsearch-php , composer require "elasticsearch/elasticsearch:~5.0"
下載完,首先配置ES 連接地址
需要注意的是,要想配置生效 把ClientBuilder.php 文件中的 private 改成 public,不然默認連接的是127.0.0.1:9200
然后就是Es的增刪改查了
新增
public function actionTest(){ $client = Yii::$app->elasticsearch->build(); $params = [ 'index' => 'my_index', 'type' => 'my_type', 'id' => 'my_id_1', 'body' => ['testField' => 'abc','name' => 'dong'] ]; $response = $client->index($params); print_r($response); }
按id精確搜索
public function actionSearch(){ $client = Yii::$app->elasticsearch->build(); $params = [ 'index' => 'my_index', 'type' => 'my_type', 'id' => 'my_id' ]; $data = $client->get($params); var_dump($data); }
按字段搜索
public function actionMatch(){ $client = Yii::$app->elasticsearch->build(); $params = [ 'index' => 'my_index', 'type' => 'my_type', 'body' => [ 'query' => [ 'match' => [ 'name' => 'dong' ] ] ] ]; $response = $client->search($params); var_dump($response); }
刪除一條數據
public function actionDelete_document(){ $es = Yii::$app->elasticsearch->build(); $params = [ 'index' => 'my_index', 'type' => 'my_type', 'id' => 'my_id' ]; $response = $es->delete($params); var_dump($response); }
刪除一個索引
public function actionDelete_index(){ $es = Yii::$app->elasticsearch->build(); $deleteParams = [ 'index' => 'my_index' ]; $response = $es->indices()->delete($deleteParams); var_dump($response); }
創建一個索引
public function actionCreate_index(){ $es = Yii::$app->elasticsearch->build(); $params = [ 'index' => 'my_index', 'body' => [ 'settings' => [ 'number_of_shards' => 2, 'number_of_replicas' => 0 ] ] ]; $response = $es->indices()->create($params); var_dump($response); }
下一篇,寫中文分詞