配置
几乎每一个方面的client 都是可以配置的。大多数用户只需要配置一些参数来满足他们的需求,但如果需要可以完全取代大部分的内部配置.
内联主机配置
最常见的配置是告诉客户端他们的集群:有多少个节点,他们的地址和端口。如果没有指定主机,客户端将尝试连接到localhost:9200
这种行为可以通过setHosts方法在ClientBuilder()
方法接受一个数组值,每个条目对应的集群中的一个节点。主机的格式各不相同,具体取决于您的需求(ip和主机名、端口、ssl等)
$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
];
$client = ClientBuilder::create() // Instantiate a new ClientBuilder
->setHosts($hosts) // Set the hosts
->build(); // Build the client object
注意,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
];
$clientBuilder = ClientBuilder::create(); // Instantiate a new ClientBuilder
$clientBuilder->setHosts($hosts); // Set the hosts
$client = $clientBuilder->build(); // Build the client object
扩展主机配置
client还支持扩展主机配置语法。内联方法依赖于PHP的配置使用filter_var()
和parse_url()
方法来验证和提取一个URL的组成部分。不幸的是,这些内置方法遇到问题与特定的边界情况。例如:filter_var()
不会接受url包含下划线,同样的,parse_url()
将无法解析如果一个基本的认证密码包含特殊字符串,比如#
, ?
出于这个原因,客户端支持延长主机语法提供更强的控制主机初始化。所有的组件验证,所以边界情况凸显在域名不会造成问题。
扩展语法的参数是一个数组为每个主机:
$hosts = [
// This is effectively equal to: "https://username:password!#$?*abc@foo.com:9200/"
[
'host' => 'foo.com',
'port' => '9200',
'scheme' => 'https',
'user' => 'username',
'pass' => 'password!#$?*abc'
],
// This is equal to "http://localhost:9200/"
[
'host' => 'localhost', // Only host is required
]
];
$client = ClientBuilder::create() // Instantiate a new ClientBuilder
->setHosts($hosts) // Set the hosts
->build(); // Build the client object
只需要主机参数。如果没有提供端口,默认端口为9200。默认的scheme方式是http。
授权和加密
对于HTTP授权和SSL加密的详细信息,请参阅Authorization and SSL.
设置重试
默认情况下,客户机将重试n次,其中n =您的集群的节点数量。重试只是执行如果操作结果在“hard”之外:拒绝连接,连接超时,DNS查询超时,等。4xx 和 5xx错误不考虑重试事件,由于节点返回一个操作响应。
如果你想禁用重试,或改变数量,可以与setRetries()方法:
.
Last updated
Was this helpful?