zoukankan      html  css  js  c++  java
  • elasticsearch连接PHP

    <?php
    
    
    namespace applib;
    
    
    use ElasticsearchClientBuilder;
    
    class Es
    {
        private $url = "127.0.0.1";
        private $port = "9200";
        private $client = null;
    
        public function __construct()
        {
            $params = [
                $this->url.":".$this->port
            ];
            $this->client = ClientBuilder::create()->setHosts($params)->build();
        }
        //创建索引
        public function createIndex(string $name = "",int $number_of_shards = 5,int $number_of_replicas = 0){
            $params["index"] = $name;
            $params["body"]["settings"]["number_of_shards"] = $number_of_shards;//是数据分片数,默认为5,有时候设置为3
            $params["body"]["settings"]["number_of_replicas"] = $number_of_replicas; //是数据备份数,如果只有一台机器,设置为0
            $result = $this->client->indices()->create($params);
            return $result;  //返回值 Array ( [acknowledged] => 1 [shards_acknowledged] => 1 [index] => person )
        }
    
        //删除索引
        public function deleteIndex(string $index = ""){
            $params["index"] = $index;
            $result = $this->client->indices()->delete($params);
            return $result; //返回值 Array ( [acknowledged] => 1 )
        }
    
        //创建文档
        public function addDocument(string $index = "" ,string $type = "" ,string $id = "" ,array $body = []){
            $params = [
                "index" => $index,
                "type"=> $type,
                "id" => $id ,
                "body" => $body
            ];
            $result = $this->client->index($params);
            return $result;
    
            /*Array
            (
                [_index] => person
                [_type] => person_type
                [_id] => 1
                [_version] => 1
                [result] => created
                [_shards] => Array
                    (
                        [total] => 1
                        [successful] => 1
                        [failed] => 0
                    )
                [_seq_no] => 0
                [_primary_term] => 1
            )*/
        }
    
        //更新文档
        public function editDocument(string $index = "" ,string $type = "" ,string $id = "" ,array $doc = []){
            $params = [
                "index" => $index,
                "type"=> $type,
                "id" => $id ,
                "body" => $doc
            ];
            $result = $this->client->update($params);
            return $result;
        }
    
        //删除文档
        public function delDocument(string $index = "" ,string $type = "" ,string $id = "" ){
            $params = [
                "index" => $index,
                "type"=> $type,
                "id" => $id ,
            ];
            $result = $this->client->delete($params);
            return $result;
        }
    
        //获取文档
        public function getDocument(string $index = "" ,string $type = "" ,string $id = ""){
            $params = [
                "index" => $index,
                "type"=> $type,
                "id" => $id ,
            ];
            $result = $this->client->get($params);
            return $result;
        }
        //查询文档
        public function searchDocument(string $index = "" ,string $type = "" ,int $from = 0 ,int $size = 10,array $order = ['order' => 'id']){
            $params = [
                "index" => $index,
                "type"=> $type,
                "from" => $from ,
                "size" => $size ,
                //"sort" => ['_score' => $order]
            ];
            //相当于sql语句:  select * from hp_product where prodcut_name like '茶'  limit 0,100 order by id desc;
            $params['body']['query']['match']['title'] = '张';
            $result = $this->client->search($params);
            print_r($result);
    
            //相当于sql语句: select * from hp_product where product_name like '茶'  and product_id = 20 limit 200,10;
            // $params['body']['query']['bool']['must'] = array(
            //     array('match' => array('product_name' => '茶')),
            //     array('match' => array('product_id' => 20))
            //    );
            // $params['size'] = 10;
            // $params['from'] = 200;
            //
            //
            // 当于sql语句:select * from hp_product where product_name like '茶' or product_id = 20 limit 200,10;
            // $params['body']['query']['bool']['should'] = array(
            //        array('match' => array('product_name' => '茶')),
            //        array('match' => array('product_id' => 20))
            //      );
            //$params['size'] = 10;
            //$params['from'] = 200;
            //
            //
            // 当于sql语句: select * from hp_product where product_name like '茶' and product_id != 20 limit 200,10;
            // $params['body']['query']['bool']['must_not'] = array(
            //        array('match' => array('product_name' => '茶')),
            //        array('match' => array('product_id' => 20))
            //      );
            //$params['size'] = 10;
            //$params['from'] = 200;
            //
            //
            //当于sql语句:select * from hp_product where id>=20 and id<30  limit 200,10;
            // $params['body']['query']['range'] = array(
            //        'id' => array('gte' => 20,'lt' => 30);
            //      );
            //$params['size'] = 10;
            //$params['from'] = 200;
        }
    
    }
  • 相关阅读:
    【转载】 下载百度云的正确姿势---油猴插件
    微信公众号开发
    F5 BIG-IP – Useful SNMP oids to monitor
    F5负载均衡 MIBs bigip oid
    常用OID(SNMP)
    有趣的深度图:可见性问题的解法
    Unity User Group 北京站:《Unity5.6新功能介绍以及HoloLens开发》
    再议Unity优化
    工作中的趣事:聊聊ref/out和方法参数的传递机制
    聊聊网络游戏同步那点事
  • 原文地址:https://www.cnblogs.com/finnlee/p/15381193.html
Copyright © 2011-2022 走看看