|PHP操作elastic| |
|-在 elasticsearch-php 中,几乎一切操作都是用关联数组来配置。REST 路径(endpoint)、文档和可选参数都是用关联数组来配置。
为了索引一个文档,我们要指定4部分信息:index,type,id 和一个 body。构建一个键值对的关联数组就可以完成上面的内容。body 的键值对格式与文档的数据保持一致性。(译者注:如 [“testField” ⇒ “abc”] 在文档中则为 {“testField” : “abc”}
在 composer.json 文件中引入 elasticsearch-php:
"require": {
"elasticsearch/elasticsearch": "~6.0",
},
composer update 也可指定更新 composer update elasticsearch/elasticsearch(尽量使用)
//如果更改端口号则需要 setHosts 更改端口号 不写默认9200
require '../vendor/autoload.php';
创建索引
public function index()
{
//指定分词
$client = ClientBuilder::create()->setHosts(['127.0.0.1:9200'])->build();
$params = [
'index' => 'asd',//创建的库名
'body' => [
'settings' => [
'number_of_shards' => 3,//分片
'number_of_replicas' => 2
],
'mappings' => [
'_source' => [
'enabled' => true
],
'properties' => [
'name' => [ //这个名字为字段名
'type' => 'text',
"analyzer" => "ik_max_word", //分词器
"search_analyzer" => "ik_max_word"
]
]
]
]
];
// Create the index with mappings and settings now
$response = $client->indices()->create($params);
echo $response;
}
add
public function save()
{
//
$client = ClientBuilder::create()->build();
$params = [
'index' => 'asd',//库名
'type' => '_doc',
//'id' => '1',
'body' => ['name' => "",//要添加的内容
'title'=>'',
'content' => ""]
];
$response = $client->index($params);
print_r($response);
}
搜索
public function read()
{
// $data = input();
// dd($data);
$client = ClientBuilder::create()->build();
$params = [
'index' => 'asd',//库名
'type' => '_doc',
'body' => [
'query' => [
'match' => [ 'name' => '中国']
]
]
];
$results = $client->search($params);
print_r($results);
}
本文为白俊遥原创文章,转载无需和我联系,但请注明来自白俊遥技术文章