首先下载需要引入的类库

链接:https://pan.baidu.com/s/1XEXviLoWM-ypwJ_B0jXqlg 密码:u54t    //Elasticsearch.zip类库压缩包地址

然后将压缩包解压到vendor目录下

 

<?php 
namespace app\index\controller; 
use think\Controller; 
class Ec extends Controller 
{ 
    public function _initialize() 
    { 
      
        Vendor('Elasticsearch.autoload'); 
        $params['hosts'] = array( 
            '192.168.9.155:9200' 
        ); 
        $this->client = new \Elasticsearch\Client($params); 
    } 
    public function index(){ 
        $this->search(); 
    } 
     
    //创建索引 
    //现在我们开始添加一个新的索引和一些自定义设置: 
    public function create_index() 
    { 
        $indexParams['index'] = 'myindex';                         //索引名称   
        $indexParams['type'] = 'mytype';                          //类型名称   
        $indexParams['body']['settings']['number_of_shards'] = 1;   //当前只有一台ES,1就可以了 
        $indexParams['body']['settings']['number_of_replicas'] = 0; //副本0,因为只有一台ES 
        $this->client->create($indexParams); 
    } 
    //插入索引数据 
    public function add_document() 
    { 
        $params = array(); 
        $params['body'] = array( 
            'product_name' => '要插入的商品名称''prodcut_id' => 5 
        ); 
        $params['index'] = 'myindex';  //索引名称  
        $params['type'] = 'mytype';   //类型名称   
        $params['id'] = '12345678';     //不指定id,系统会自动生成唯一id   
        $ret = $this->client->index($params); 
    } 
    //删除索引 
    //由于 elasticsearch 的动态性质,我们添加第一个文档的时候自动创建了索引和一些默认设置。让我们删除这个索引,因为我们以后想要指定自己的设置: 
    public function delete_index() 
    { 
        $deleteParams['index'] = 'myindex'; 
        $this->client->indices()->delete($deleteParams); 
    } 
    //删除文档 
    public function delete_document() 
    { 
        $deleteParams = array(); 
        $deleteParams['index'] = 'myindex'; 
        $deleteParams['type'] = 'mytype'; 
        $deleteParams['id'] = '123'; 
        $retDelete = $this->client->delete($deleteParams); 
    } 
    //更改文档 
    public function update_document() 
    { 
        $updateParams = array(); 
        $updateParams['index'] = 'myindex'; 
        $updateParams['type'] = 'mytype'; 
        $updateParams['id'] = 'my_id'; 
        $updateParams['body']['doc']['product_name']  = '新商品名'; 
       $response = $this->client->update($updateParams); 
          
    } 
    //查询 
    public function search() 
    { 
        $searchParams['index'] = 'myindex'; 
        $searchParams['type'] = 'mytype'; 
        $searchParams['from'] = 0; 
        $searchParams['size'] = 100; 
        $searchParams['sort'] = array( 
            '_score' => array( 
                'order' => 'id' 
            ) 
        ); 
        //相当于sql语句:  select * from hp_product where prodcut_name like '茶'  limit 0,100 order by id desc;  
        $searchParams['body']['query']['match']['product_name'] = ''; 
        $retDoc = $this->client->search($searchParams); 
         
        echo '<pre>'; 
        print_r($retDoc); 
        //相当于sql语句: select * from hp_product where product_name like '茶'  and product_id = 20 limit 200,10;   
        // $searchParams['body']['query']['bool']['must'] = array(   
        //     array('match' => array('product_name' => '茶')),   
        //     array('match' => array('product_id' => 20))   
        //    );   
        // $searchParams['size'] = 10;   
        // $searchParams['from'] = 200;   
        //  
        //   
        // 当于sql语句:select * from hp_product where product_name like '茶' or product_id = 20 limit 200,10;  
        // $searchParams['body']['query']['bool']['should'] = array(   
        //        array('match' => array('product_name' => '茶')),   
        //        array('match' => array('product_id' => 20))   
        //      );   
        //$searchParams['size'] = 10;   
        //$searchParams['from'] = 200;  
        // 
        // 
        // 当于sql语句: select * from hp_product where product_name like '茶' and product_id != 20 limit 200,10;  
        // $searchParams['body']['query']['bool']['must_not'] = array(   
        //        array('match' => array('product_name' => '茶')),   
        //        array('match' => array('product_id' => 20))   
        //      );   
        //$searchParams['size'] = 10;   
        //$searchParams['from'] = 200;  
        // 
        // 
        //当于sql语句:select * from hp_product where id>=20 and id<30  limit 200,10;  
        // $searchParams['body']['query']['range'] = array(   
        //        'id' => array('gte' => 20,'lt' => 30);   
        //      );   
        //$searchParams['size'] = 10;   
        //$searchParams['from'] = 200;  
    } 
    //获取文档 
    public function get_document() 
    { 
        $getParams = array(); 
        $getParams['index'] = 'myindex'; 
        $getParams['type'] = 'mytype'; 
        $getParams['id'] = '12344'; 
        $retDoc = $this->client->get($getParams); 
        print_r($retDoc); 
    } 
} 
?>

关于更多详细的说明就自己百度一下官方文档和百度其他帖子吧~

发布评论

分享到:

IT虾米网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!

Swoole学习(一)了解一下Swoole的强大并在Centos安装Swoole及PHP扩展开启详解
你是第一个吃螃蟹的人
发表评论

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。