public function put_mapping()
{
if (defined('EP_IS_NETWORK') && EP_IS_NETWORK) {
$es_version = get_site_option('ep_es_version', false);
} else {
$es_version = get_option('ep_es_version', false);
}
$es_version = $this->get_elasticsearch_version();
if (empty($es_version)) {
$es_version = apply_filters('ep_fallback_elasticsearch_version', '2.0');
}
if (!$es_version || version_compare($es_version, '5.0') < 0) {
$mapping_file = 'pre-5-0.php';
} else {
$mapping_file = '5-0.php';
}
$mapping = (require apply_filters('ep_config_mapping_file', dirname(__FILE__) . '/../includes/mappings/' . $mapping_file));
/**
* We are removing shard/replica defaults but need to maintain the filters
* for backwards compat.
*
* @since 1.4
*/
global $wp_filter;
if (!empty($wp_filter['ep_default_index_number_of_shards'])) {
if (empty($mapping['settings']['index'])) {
$mapping['settings']['index'] = array();
}
$mapping['settings']['index']['number_of_shards'] = (int) apply_filters('ep_default_index_number_of_shards', 5);
// Default within Elasticsearch
}
if (!empty($wp_filter['ep_default_index_number_of_replicas'])) {
if (empty($mapping['settings']['index'])) {
$mapping['settings']['index'] = array();
}
$mapping['settings']['index']['number_of_replicas'] = (int) apply_filters('ep_default_index_number_of_replicas', 1);
}
$mapping = apply_filters('ep_config_mapping', $mapping);
$index = ep_get_index_name();
$request_args = array('body' => json_encode($mapping), 'method' => 'PUT');
$request = ep_remote_request($index, apply_filters('ep_put_mapping_request_args', $request_args));
$request = apply_filters('ep_config_mapping_request', $request, $index, $mapping);
if (!is_wp_error($request) && 200 === wp_remote_retrieve_response_code($request)) {
$response_body = wp_remote_retrieve_body($request);
return json_decode($response_body);
}
return false;
}