一.composer安装
composer require elasticsearch/elasticsearch
二.引入elasticsearch-php
require 'vendor/autoload.php';
use Elasticsearch\ClientBuilder;
三.实例化
//配置方式一
$hosts = [
// '192.168.1.1:9200', // IP + Port
// '192.168.1.2', // Just IP
// 'mydomain.server.com:9201', // Domain + Port
// 'mydomain2.server.com', // Just Domain
// 'https://localhost', // SSL to localhost
// 'https://192.168.1.3:9200' // SSL to IP + Port
];
//配置方式二
$hosts = [
[
"host" => "localhost",
"port" => "9200",
// "scheme" => "http",
// "user" => "",
// "pass" => "",
],
];
//实例化
$client = ClientBuilder::create()->setHosts($hosts)->build();
所有操作基于$client
四.笔记说明
官方文档:https://www.elastic.co/guide/cn/elasticsearch/php/current/index.html
//创建
$params = ["index" => "table","type" => "database","id" => "id","body" => ["field1" => "value1","field2" => "value2"]];
$response = $client->index($params);
//获取
$params = ["index" => "table","type" => "database","id" => "id"];
$response = $client->get($params);
//更新
$params = ["index" => "table","type" => "database","id" => "id","body" => ["doc" => ["field1" => "new value1","field2" => "new value2"] ]];
$response = $client->update($params);
//删除
$params = ["index" => "table","type" => "database","id" => "id"];
$response = $client->delete($params);
//match 查询 (全文索引 汉字基于 单个文字 全文搜索,英文 以空格分出的单词 全文搜索)
$params = ["index" => "table","type" => "database","body" => ["query" => ["match" =>["field1" => "value1"]]]];
$response = $client->search($params);
//可以使用json字符串替代body
$json = '{"query":{"match":{"field1":"value1"}}}';
$params = ["index" => "table","type" => "database","body" => $json];
$response = $client->search($params);
//match_phrase 查询 (类似sql %like%)
$params = ["index" => "table","type" => "database","body" => ["query" => ["match_phrase" =>["field1" => "value1"]]]];
$response = $client->search($params);
//bool 查询
// must 查询 类似 and
$params = ["index" => "table","type" => "database","body" => ["query" => ["bool" => ["must" => [["match" =>["field1" => "value1"]],["match" =>["field2" => "value2"]]]]]]];
$response = $client->search($params);
// should 查询 类似 or
$params = ["index" => "table","type" => "database","body" => ["query" => ["bool" => ["should" => [["match" =>["field1" => "value1"]],["match" =>["field2" => "value2"]]]]]]];
$response = $client->search($params);
可读样式
//创建
$params = [
"index" => "table",
"type" => "database",
"id" => "id",
"body" => [
"field1" => "value1",
"field2" => "value2"
]
];
$response = $client->index($params);
//获取
$params = [
"index" => "table",
"type" => "database",
"id" => "id"
];
$response = $client->get($params);
//更新
$params = [
"index" => "table",
"type" => "database",
"id" => "id",
"body" => [
"doc" => [
"field1" => "new value1",
"field2" => "new value2"
]
]
];
$response = $client->update($params);
//删除
$params = [
"index" => "table",
"type" => "database",
"id" => "id"
];
$response = $client->delete($params);
//match 查询 (全文索引 汉字基于 单个文字 全文搜索,英文 以空格分出的单词 全文搜索)
$params = [
"index" => "table",
"type" => "database",
"body" => [
"query" => [
"match" =>[
"field1" => "value1"
]
]
]
];
$response = $client->search($params);
$json = '{
"query":{
"match":{
"field1":"value1"
}
}
}';
$params = [
"index" => "table",
"type" => "database",
"body" => $json
];
$response = $client->search($params);
//match_phrase 查询 (类似sql %like%)
$params = [
"index" => "table",
"type" => "database",
"body" => [
"query" => [
"match_phrase" =>[
"field1" => "value1"
]
]
]
];
$response = $client->search($params);
//bool查询
// must 查询 类似 and
$params = [
"index" => "table",
"type" => "database",
"body" => [
"query" => [
"bool" => [
"must" => [
[
"match" =>[
"field1" => "value1"
]
],
[
"match" =>[
"field2" => "value2"
]
]
]
]
]
]
];
$response = $client->search($params);
// should 查询 类似 or
$params = [
"index" => "table",
"type" => "database",
"body" => [
"query" => [
"bool" => [
"should" => [
[
"match" =>[
"field1" => "value1"
]
],
[
"match" =>[
"field2" => "value2"
]
]
]
]
]
]
];
$response = $client->search($params);
官方文档:https://www.elastic.co/guide/cn/elasticsearch/php/current/index.html