加入收藏 | 设为首页 | 会员中心 | 我要投稿 武陵站长网 (https://www.50888.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

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

发布时间:2023-01-08 10:31:25 所属栏目:PHP教程 来源:互联网
导读: 目录
一、实战场景
如何在 PHP 中使用 Elasticsearch 的索引 API 接口
二、知识点
Elasticsearch 本质上是一个数据库,但并不是 MySQL 这种关系型数据库,查询语言也不是 SQLphp采集类,而

目录

一、实战场景

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

二、知识点

Elasticsearch 本质上是一个数据库,但并不是 MySQL 这种关系型数据库,查询语言也不是 SQLphp采集类,而是 Elasticsearch 自己的一套查询语言。既然是数据库,有一些概念是互通的,如下表:

php小说采集网站源码_php采集类_php 采集微信文章内容

三、菜鸟实战

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

创建索引

发送创建请求

创建索引返回结果

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 的索引操作连通了,接下来就可以在索引上创建文档了。

(编辑:武陵站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!