在php中安装实现线上阿里云ES搜索

首先在阿里云购买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;

基本操作 如有问题可私信 或留言 看到后第一时间回复

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值