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

目录

一、实战场景

二、知识点

PHP

Elasticsearch

索引 index

MySQL

三、菜鸟实战


一、实战场景

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

猜你喜欢

转载自blog.csdn.net/qq_39816613/article/details/128043337