文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

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

2023-08-31 20:41

关注

目录

一、实战场景

二、知识点

PHP

Elasticsearch

索引 index

MySQL

三、菜鸟实战


一、实战场景

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

二、知识点

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

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯