首先在阿里云购买Elasticsearch
创建集群后
点击进入请开启公网访问地址后使用
进入到集群网络设置
将公网地址打开
点击修改公网地址访问白名单
127.0.0.1是不行的 换成0.0.0.0/0才是公共
设置好后需要等待生效时间
回到实例化Elasticsearch首页查看状态变成芫·正常后
在游览器url中输入公网地址(加):9200(默认端口号)测试如下
测试成功后
点击左侧菜单栏ES集群设置中的修改配置
选择允许自动创建索引
其他Configure输入
//私网地址:9200(默认端口号)
reindex.remote.whitelist: ["es-cn-09k1rgid9000g****.elasticsearch.aliyuncs.com:9200"]
等待生效后
就可以正常使用了
在PHP中composer安装Elasticsearch
{
"require":
"elasticsearch/elasticsearch": "~6.0"
}
composer update
也可指定更新 composer update elasticsearch/elasticsearch
创建中文分词索引
use Elasticsearch\ClientBuilder;
/**
*<HOST>:阿里云Elasticsearch实例基本信息页面中的内网或外网地址。
*<USER NAME>:访问阿里云Elasticsearch实例的用户名,默认为elastic。
*<PASSWORD>:访问阿里云Elasticsearch实例的密码。elastic用户的密码在创建实例时设定,如果忘记可进行重置,重置密码的注意事项和操作步骤请参见重置实例访问密码。
*/
$client = ClientBuilder::create()->setHosts([
[
'host' => '<HOST>',
'port' => '9200',
'scheme' => 'http',
'user' => '<USER NAME>',
'pass' => '<PASSWORD>'
]
])->setConnectionPool('\Elasticsearch\ConnectionPool\SimpleConnectionPool', [])
->setRetries(10)->build();
//简单索引(二选一)
$params = [
'index' => 'my_index'
];
// Create the index
$response = $client->indices()->create($params);
//指定分词(别忘了粘上面的$client)
$params = [
'index' => 'my_index',
'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"
],
'desc' => [
'type' => 'text',
"analyzer" => "ik_max_word",
"search_analyzer" => "ik_max_word"
]
]
]
]
];
// Create the index with mappings and settings now
$response = $client->indices()->create($params);
添加
use Elasticsearch\ClientBuilder;
/**
*<HOST>:阿里云Elasticsearch实例基本信息页面中的内网或外网地址。
*<USER NAME>:访问阿里云Elasticsearch实例的用户名,默认为elastic。
*<PASSWORD>:访问阿里云Elasticsearch实例的密码。elastic用户的密码在创建实例时设定,如果忘记可进行重置,重置密码的注意事项和操作步骤请参见重置实例访问密码。
*/
$client = ClientBuilder::create()->setHosts([
[
'host' => '<HOST>',
'port' => '9200',
'scheme' => 'http',
'user' => '<USER NAME>',
'pass' => '<PASSWORD>'
]
])->setConnectionPool('\Elasticsearch\ConnectionPool\SimpleConnectionPool', [])
->setRetries(10)->build();
$params = [
'index' => 'my_index',
'type' => '_doc',
//'id' => '1',
'body' => [
'name' => "张三",
'desc' => "张三是我小名,我真名叫李二狗"
]
];
$response = $client->index($params);
print_r($response);
搜索
1.ID搜索
use Elasticsearch\ClientBuilder;
/**
*<HOST>:阿里云Elasticsearch实例基本信息页面中的内网或外网地址。
*<USER NAME>:访问阿里云Elasticsearch实例的用户名,默认为elastic。
*<PASSWORD>:访问阿里云Elasticsearch实例的密码。elastic用户的密码在创建实例时设定,如果忘记可进行重置,重置密码的注意事项和操作步骤请参见重置实例访问密码。
*/
$client = ClientBuilder::create()->setHosts([
[
'host' => '<HOST>',
'port' => '9200',
'scheme' => 'http',
'user' => '<USER NAME>',
'pass' => '<PASSWORD>'
]
])->setConnectionPool('\Elasticsearch\ConnectionPool\SimpleConnectionPool', [])
->setRetries(10)->build();
$params = [
'index' => 'my_index',
'type' => '_doc',
'id' => '1'
];
$response = $client->get($params);
print_r($response);
2.Match搜索
use Elasticsearch\ClientBuilder;
/**
*<HOST>:阿里云Elasticsearch实例基本信息页面中的内网或外网地址。
*<USER NAME>:访问阿里云Elasticsearch实例的用户名,默认为elastic。
*<PASSWORD>:访问阿里云Elasticsearch实例的密码。elastic用户的密码在创建实例时设定,如果忘记可进行重置,重置密码的注意事项和操作步骤请参见重置实例访问密码。
*/
$client = ClientBuilder::create()->setHosts([
[
'host' => '<HOST>',
'port' => '9200',
'scheme' => 'http',
'user' => '<USER NAME>',
'pass' => '<PASSWORD>'
]
])->setConnectionPool('\Elasticsearch\ConnectionPool\SimpleConnectionPool', [])
->setRetries(10)->build();
$params = [
'index' => 'my_index',
//'type' => '_doc',
'body' => [
'query' => [
'match' => [
'name' => '张三'
]
],
'highlight' => [
'pre_tags' => ["<em>"],
'post_tags' => ["</em>"],
'fields' => [
"name" => new \stdClass()
]
]
]
];
//偏移
$params["size"] = 1;
$params["from"] = 1;
$response = $client->search($params);
print_r($response);
3.Bool查询
use Elasticsearch\ClientBuilder;
/**
*<HOST>:阿里云Elasticsearch实例基本信息页面中的内网或外网地址。
*<USER NAME>:访问阿里云Elasticsearch实例的用户名,默认为elastic。
*<PASSWORD>:访问阿里云Elasticsearch实例的密码。elastic用户的密码在创建实例时设定,如果忘记可进行重置,重置密码的注意事项和操作步骤请参见重置实例访问密码。
*/
$client = ClientBuilder::create()->setHosts([
[
'host' => '<HOST>',
'port' => '9200',
'scheme' => 'http',
'user' => '<USER NAME>',
'pass' => '<PASSWORD>'
]
])->setConnectionPool('\Elasticsearch\ConnectionPool\SimpleConnectionPool', [])
->setRetries(10)->build();
$params = [
'index' => 'my_index',
'type' => '_doc',
'body' => [
'query' => [
'bool' => [
'must' => [
[ 'match' => [ 'name' => '中华' ] ],
[ 'match' => [ 'name' => '人民' ] ],
]
]
]
]
];
$response = $client->search($params);
print_r($response);
4.复杂查询
use Elasticsearch\ClientBuilder;
/**
*<HOST>:阿里云Elasticsearch实例基本信息页面中的内网或外网地址。
*<USER NAME>:访问阿里云Elasticsearch实例的用户名,默认为elastic。
*<PASSWORD>:访问阿里云Elasticsearch实例的密码。elastic用户的密码在创建实例时设定,如果忘记可进行重置,重置密码的注意事项和操作步骤请参见重置实例访问密码。
*/
$client = ClientBuilder::create()->setHosts([
[
'host' => '<HOST>',
'port' => '9200',
'scheme' => 'http',
'user' => '<USER NAME>',
'pass' => '<PASSWORD>'
]
])->setConnectionPool('\Elasticsearch\ConnectionPool\SimpleConnectionPool', [])
->setRetries(10)->build();
$params = [
'index' => 'my_index',
'type' => '_doc',
'body' => [
'query' => [
'bool' => [
'filter' => [
'term' => [ 'age' => 12 ]
],
'should' => [
'match' => [ 'name' => '中国'
]
]
]
]
]
];
$response = $client->search($params);
print_r($response);
5高亮显示
use Elasticsearch\ClientBuilder;
/**
*<HOST>:阿里云Elasticsearch实例基本信息页面中的内网或外网地址。
*<USER NAME>:访问阿里云Elasticsearch实例的用户名,默认为elastic。
*<PASSWORD>:访问阿里云Elasticsearch实例的密码。elastic用户的密码在创建实例时设定,如果忘记可进行重置,重置密码的注意事项和操作步骤请参见重置实例访问密码。
*/
$client = ClientBuilder::create()->setHosts([
[
'host' => '<HOST>',
'port' => '9200',
'scheme' => 'http',
'user' => '<USER NAME>',
'pass' => '<PASSWORD>'
]
])->setConnectionPool('\Elasticsearch\ConnectionPool\SimpleConnectionPool', [])
->setRetries(10)->build();
$params = [
'index' => 'my_index',
//'type' => '_doc',
'body' => [
'query' => [
'match' => [
'name' => '中华人民'
]
],
'highlight' => [
'pre_tags' => ["<em>"],
'post_tags' => ["</em>"],
'fields' => [
"name" => new \stdClass()
]
]
]
];
$response = $client->search($params);
print_r($response);
删除索引
use Elasticsearch\ClientBuilder;
/**
*<HOST>:阿里云Elasticsearch实例基本信息页面中的内网或外网地址。
*<USER NAME>:访问阿里云Elasticsearch实例的用户名,默认为elastic。
*<PASSWORD>:访问阿里云Elasticsearch实例的密码。elastic用户的密码在创建实例时设定,如果忘记可进行重置,重置密码的注意事项和操作步骤请参见重置实例访问密码。
*/
$client = ClientBuilder::create()->setHosts([
[
'host' => '<HOST>',
'port' => '9200',
'scheme' => 'http',
'user' => '<USER NAME>',
'pass' => '<PASSWORD>'
]
])->setConnectionPool('\Elasticsearch\ConnectionPool\SimpleConnectionPool', [])
->setRetries(10)->build();
$params = ['index' => 'my_index'];
$response = $client->indices()->delete($params)
更新索引
use Elasticsearch\ClientBuilder;
/**
*<HOST>:阿里云Elasticsearch实例基本信息页面中的内网或外网地址。
*<USER NAME>:访问阿里云Elasticsearch实例的用户名,默认为elastic。
*<PASSWORD>:访问阿里云Elasticsearch实例的密码。elastic用户的密码在创建实例时设定,如果忘记可进行重置,重置密码的注意事项和操作步骤请参见重置实例访问密码。
*/
$client = ClientBuilder::create()->setHosts([
[
'host' => '<HOST>',
'port' => '9200',
'scheme' => 'http',
'user' => '<USER NAME>',
'pass' => '<PASSWORD>'
]
])->setConnectionPool('\Elasticsearch\ConnectionPool\SimpleConnectionPool', [])
->setRetries(10)->build();
$params = [
'index' => 'my_index',
'type' => '_doc',
'id' => 'srgiyW0BpEEPDQFsRhIK',
'body' => [
'doc' => [
'name' => 'abc'
]
]
];
$response = $client->update($params);
print_r($response);exit;
基本操作 如有问题可私信 或留言 看到后第一时间回复