实战场景

如何在 PHP 中使用 Elasticsearch 的索引别名 API 接口

知识点

  • PHP
  • Elasticsearch
  • 索引 index
  • 索引别名 index alias


索引别名是给一个或者多个索引定义另外一个名称,使索引和索引别名之间可以建立某种逻辑关系,

以方便在不同索引之间进行统一操作。

PHP 如何使用 Elasticsearch 的 索引别名 API 接口_elasticsearch


菜鸟实战

基础环境准备可参考之前文章。

创建索引别名

发送创建索引别名请求

PHP// 创建索引别名
public function aliasCreate(Request $request){
    // 获取索引名称
    $indexName = $request->get("index_name");
    $indexAliasName = $request->get("index_alias_name");

    // 确定参数
    $params = [
        'index' => $indexName,
        'name' => $indexAliasName,
    ];

    // 执行
    $client = EsHelper::
getEsClient();
    try {
        $response = $client->indices()->putAlias($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 的 索引别名 API 接口_php_02


查询索引详情

发送查询请求

PHP// 查询索引别名
public function aliasList(Request $request){
    // 获取索引名称
    $index = $request->get("index");
    $aliasName = $request->get("alias_name");

    $params = [];
    if(!empty($index)){
        $params['index'] = $index;
    }

    if(!empty($aliasName)){
        $params['name'] = $aliasName;
    }

    // 执行
    $client = EsHelper::
getEsClient();
    try {
        $response = $client->indices()->getAlias($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": {
            "test": {
                "aliases": {
                    "test_alias": []
                }
            }
        }
    }
}

PHP 如何使用 Elasticsearch 的 索引别名 API 接口_elasticsearch_03


删除索引别名

发送删除索引别名请求

PHP// 删除索引别名
public function aliasDelete(Request $request){
    // 获取索引名称
    $index = $request->get("index");
    $aliasName = $request->get("alias_name");

    $params = [];
    $params['index'] = $index;
    $params['name'] = $aliasName;

    // 执行
    $client = EsHelper::
getEsClient();
    try {
        $response = $client->indices()->deleteAlias($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 索引连通了,接下来就可以应用到具体的业务当中。