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

Posted 菜鸟实战

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PHP 如何使用 Elasticsearch 的 索引 API 接口相关的知识,希望对你有一定的参考价值。

目录

一、实战场景

二、知识点

PHP

Elasticsearch

索引 index

MySQL

三、菜鸟实战


一、实战场景

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

二、知识点

  • PHP

  • Elasticsearch

  • 索引 index

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

以上是关于PHP 如何使用 Elasticsearch 的 索引 API 接口的主要内容,如果未能解决你的问题,请参考以下文章

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

Elasticsearch-PHP 概述

Elasticsearch:为 Elasticsearch 8.x 引入新的 PHP 客户端

PHP如何与搜索引擎Elasticsearch交互?

Elasticsearch-PHP 处理JSON数组和对象

Elasticsearch-PHP 快速开始