我知道我怎麼能在curl中激活ttl特性,但是我不知道官方的Elasticsearch PHP庫(https://github.com/elasticsearch/elasticsearch-php)是否也支持這個特性。我已經挖掘了Lib的代碼,但無法弄清楚。官方Elasticsearch PHP模塊啓用TTL
感謝您的幫助!
我知道我怎麼能在curl中激活ttl特性,但是我不知道官方的Elasticsearch PHP庫(https://github.com/elasticsearch/elasticsearch-php)是否也支持這個特性。我已經挖掘了Lib的代碼,但無法弄清楚。官方Elasticsearch PHP模塊啓用TTL
感謝您的幫助!
我已經創建了我自己的方法來啓用索引類型上的ttl功能。我還提交的官方Github上回購的問題:https://github.com/elasticsearch/elasticsearch-php/issues/62
class ElasticSearchClient extends \Elasticsearch\Client {
public function enableTtl($params) {
$index = $this->extractArgument($params, 'index');
$type = $this->extractArgument($params, 'type');
$body = json_encode(array($type => array('_ttl' => array('enabled' => true))));
/** @var callback $endpointBuilder */
$endpointBuilder = $this->dicEndpoints;
/** @var \Elasticsearch\Endpoints\Update $endpoint */
$endpoint = $endpointBuilder('Indices\Mapping\Put');
$endpoint->setIndex($index)
->setType($type)
->setBody($body);
$endpoint->setParams($params);
$response = $endpoint->performRequest();
return $response['data'];
}
}
嘛,恕我直言,你需要更新使用putMapping()方法elasticsearch映射。不需要特殊的方法調用。
這是一個在我們的系統中工作的例子。
$params['index'] = 'yourindexname';
$params['type'] = 'yourtypename';
$mapping = [
'_ttl' => [
'enabled' => 'true',
'default' => '14d',
],
'properties' => [
[... add your properties here ...]
]
];
$params['body']['yourtypename'] = $mapping;
$this->getClient()->indices()->putMapping($params);
您是否曾嘗試在'$ params'數組中提交TTL?看看[客戶代碼](https://github.com/elasticsearch/elasticsearch-php/blob/2c06a6284e4c3ec0ad63a304b16f3698abc11094/src/Elasticsearch/Client.php#L732) – Thorsten
是的,我做了...但我需要激活ttl特徵在索引中。 –