PHP 如何使用 Elasticsearch 的 索引 API 接口
Posted 菜鸟实战
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PHP 如何使用 Elasticsearch 的 索引 API 接口相关的知识,希望对你有一定的参考价值。
目录
一、实战场景
如何在 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 接口