在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
<?php namespace app\lib; use Elasticsearch\ClientBuilder; 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; } }
|
2022-08-17
2022-11-06
2022-07-29
2022-08-18
2022-08-13
请发表评论