目录
一、实战场景
如何在 PHP 中使用 Elasticsearch 的索引 API 接口
二、知识点
-
PHP
-
Elasticsearch
-
索引 index
-
MySQL
Elasticsearch 本质上是一个数据库,但并不是 MySQL 这种关系型数据库,查询语言也不是 SQL,而是 Elasticsearch 自己的一套查询语言。既然是数据库,有一些概念是互通的,如下表:
三、菜鸟实战
基础环境准备可参考之前文章。
创建索引
发送创建请求
创建索引返回结果
PHP// 创建索引public function create(Request $request){ // 获取索引名称 $testIndex = $request->get("index_name", "test"); // 执行 $client = EsHelper::getEsClient(); $params = [ 'index' => $testIndex, ]; $response = $client->indices()->create($params); // 返回 $data = [ 'es_info' => $response->asArray(), ]; $this->success($data);}
JSON{ "code": 0, "message": "ok", "data": { "es_info": { "acknowledged": true, "shards_acknowledged": true, "index": "test" } }}
更加复杂的参数
可指定主分片个数:number_of_shards
可指定副分片个数:number_of_replicas
PHP$params = [ 'index' => 'my_index', 'body' => [ 'settings' => [ 'number_of_shards' => 3, 'number_of_replicas' => 2 ], 'mappings' => [ 'my_type' => [ '_source' => [ 'enabled' => true ], 'properties' => [ 'first_name' => [ 'type' => 'string', 'analyzer' => 'standard' ], 'age' => [ 'type' => 'integer' ] ] ] ] ]];
查询索引详情
发送查询请求
PHP// 查询索引public function detail(Request $request){ // 获取索引名称 $queryIndexName = $request->get("index_name", "test"); $params = [ 'index' => $queryIndexName, ]; // 执行 $client = EsHelper::getEsClient(); $result = ""; try { $response = $client->indices()->get($params); $result = $response->asArray(); }catch (\Exception $e){ $result = $e->getMessage(); } // 返回 $data = [ 'es_info' => $result, ]; $this->success($data);}
响应结果
JSON{ "code": 0, "message": "ok", "data": { "es_info": { "test1": { "aliases": [], "mappings": [], "settings": { "index": { "routing": {"allocation": { "include": { "_tier_preference": "data_content" }} }, "number_of_shards": "1", "provided_name": "test1", "creation_date": "1669179904968", "number_of_replicas": "1", "uuid": "Y62XH2Z4RC-kd2cKieOu9Q", "version": {"created": "8050199" } } } } } }}
更新索引
发送更新索引请求
PHP// 更新索引public function update(Request $request){ // 获取索引名称 $indexName = $request->get("index_name", "test"); $number_of_replicas = $request->get("number_of_replicas", 1); // 确定参数 $params = [ 'index' => $indexName, 'body' => [ 'settings' => [ 'number_of_replicas' => $number_of_replicas, ] ] ]; // 执行 $client = EsHelper::getEsClient(); try { $response = $client->indices()->putSettings($params); $result = $response->asArray(); }catch (\Exception $e){ $result = $e->getMessage(); } // 返回 $data = [ 'es_info' => $result, ]; $this->success($data);}
响应结果
JSON{ "code": 0, "message": "ok", "data": { "es_info": { "acknowledged": true } }}
删除索引
发送删除索引请求
PHP// 删除索引public function delete(Request $request){ // 获取索引名称 $indexName = $request->get("index_name", "test1"); // 确定参数 $params = [ 'index' => $indexName, ]; // 执行 $client = EsHelper::getEsClient(); try { $response = $client->indices()->delete($params); $result = $response->asArray(); }catch (\Exception $e){ $result = $e->getMessage(); } // 返回 $data = [ 'es_info' => $result, ]; $this->success($data);}
响应结果
JSON{ "code": 0, "message": "ok", "data": { "es_info": { "acknowledged": true } }}
通过上述步骤,就将 php 与 Elasticsearch 的索引操作连通了,接下来就可以在索引上创建文档了。
来源地址:https://blog.csdn.net/qq_39816613/article/details/128043337