标签:
本节通过客户端来介绍一下索引API的各种操作。索引操作包含任何管理索引本身(例如,创建索引,删除索引,更改映射等等)。
我们通过一些常见的操作的代码片段来介绍,然后在表格中列出剩下的方法。REST API的参数是相同的,所以它应该很容易执行你所需要的操作。
索引操作都包含在一个独特的命名空间中,和根对象上的方法区分开。举个例子,让我们创建一个索引:
$client = new Elasticsearch\Client();
$indexParams[‘index‘] = ‘my_index‘; //index
$client->indices()->create($indexParams);
当然,你可以指定任何通常会被包含在一个新索引创建API的参数。所有参数通常会在请求体,位于请求体的关联数组:
$client = new Elasticsearch\Client(); $indexParams[‘index‘] = ‘my_index‘; // Index Settings $indexParams[‘body‘][‘settings‘][‘number_of_shards‘] = 3; $indexParams[‘body‘][‘settings‘][‘number_of_replicas‘] = 2; // Example Index Mapping $myTypeMapping = array( ‘_source‘ => array( ‘enabled‘ => true ), ‘properties‘ => array( ‘first_name‘ => array( ‘type‘ => ‘string‘, ‘analyzer‘ => ‘standard‘ ), ‘age‘ => array( ‘type‘ => ‘integer‘ ) ) ); $indexParams[‘body‘][‘mappings‘][‘my_type‘] = $myTypeMapping; // Create the index $client->indices()->create($indexParams);
这是一个更加复杂的创建索引的例子,展示如何定义分析,分词器、过滤器和索引设置。虽然本质上和前面的例子相同,但更复杂的例子可以帮助“现实世界”的客户使用,因为这个特殊的语法很容易陷入困境。
为简便起见,给出的例子是使用PHP 5.4+版本短数组语法([]而不是array())
$params = [ ‘index‘ => ‘reuters‘, ‘body‘ => [ ‘settings‘ => [ // 顶级设置包含关于索引(分片等)和分析器的配置 ‘number_of_shards‘ => 1, ‘number_of_replicas‘ => 0, ‘analysis‘ => [ // 分析嵌套设置,包含分词器、过滤器、字符过滤器和分析器 ‘filter‘ => [ ‘shingle‘ => [ ‘type‘ => ‘shingle‘ ] ], ‘char_filter‘ => [ ‘pre_negs‘ => [ ‘type‘ => ‘pattern_replace‘, ‘pattern‘ => ‘(\\w+)\\s+((?i:never|no|nothing|nowhere|noone|none|not|havent|hasnt|hadnt|cant|couldnt|shouldnt|wont|wouldnt|dont|doesnt|didnt|isnt|arent|aint))\\b‘, ‘replacement‘ => ‘~$1 $2‘ ], ‘post_negs‘ => [ ‘type‘ => ‘pattern_replace‘, ‘pattern‘ => ‘\\b((?i:never|no|nothing|nowhere|noone|none|not|havent|hasnt|hadnt|cant|couldnt|shouldnt|wont|wouldnt|dont|doesnt|didnt|isnt|arent|aint))\\s+(\\w+)‘, ‘replacement‘ => ‘$1 ~$2‘ ] ], ‘analyzer‘ => [ ‘reuters‘ => [ ‘type‘ => ‘custom‘, ‘tokenizer‘ => ‘standard‘, ‘filter‘ => [‘lowercase‘, ‘stop‘, ‘kstem‘] ] ] ] ], ‘mappings‘ => [ // 映射是另外一个嵌套在body中的顶级元素,包含各种类型的映射 ‘_default_‘ => [ // 默认类型是动态模版,应用于任何没有明确配置的字段 ‘properties‘ => [ ‘title‘ => [ ‘type‘ => ‘string‘, ‘analyzer‘ => ‘reuters‘, ‘term_vector‘ => ‘yes‘, ‘copy_to‘ => ‘combined‘ ], ‘body‘ => [ ‘type‘ => ‘string‘, ‘analyzer‘ => ‘reuters‘, ‘term_vector‘ => ‘yes‘, ‘copy_to‘ => ‘combined‘ ], ‘combined‘ => [ ‘type‘ => ‘string‘, ‘analyzer‘ => ‘reuters‘, ‘term_vector‘ => ‘yes‘ ], ‘topics‘ => [ ‘type‘ => ‘string‘, ‘index‘ => ‘not_analyzed‘ ], ‘places‘ => [ ‘type‘ => ‘string‘, ‘index‘ => ‘not_analyzed‘ ] ] ], ‘my_type‘ => [ // my_type类型是一个用户自定义的类型,包含一个my_field字段 ‘properties‘ => [ ‘my_field‘ => [ ‘type‘ => ‘string‘ ] ] ] ] ] ]; $client->indices()->create($params);
删除索引是非常简单的:
$deleteParams[‘index‘] = ‘my_index‘; $client->indices()->delete($deleteParams);
API设置允许你动态地修改任何索引配置:
$params[‘index‘] = ‘my_index‘; $params[‘body‘][‘index‘][‘number_of_replicas‘] = 0; $params[‘body‘][‘index‘][‘refresh_interval‘] = -1; $ret = $client->indices()->putSettings($params);
获取APi配置可以现实当前的一个或多个索引的信息:
// Get settings for one index $params[‘index‘] = ‘my_index‘; $ret = $client->indices()->getSettings($params); // Get settings for several indexes $params[‘index‘] = array(‘my_index‘, ‘my_index2‘); $ret = $client->indices()->getSettings($params);
设置API映射允许你修改或添加一个以存在的索引映射
// Set the index and type $params[‘index‘] = ‘my_index‘; $params[‘type‘] = ‘my_type2‘; // Adding a new type to an existing index $myTypeMapping2 = array( ‘_source‘ => array( ‘enabled‘ => true ), ‘properties‘ => array( ‘first_name‘ => array( ‘type‘ => ‘string‘, ‘analyzer‘ => ‘standard‘ ), ‘age‘ => array( ‘type‘ => ‘integer‘ ) ) ); $params[‘body‘][‘my_type2‘] = $myTypeMapping2; // Update the index mapping $client->indices()->putMapping($params);
获取API映射会返回关于索引和类型的详细信息。根据你希望检索的映射,你可以指定索引和类型的组合数目:
// Get mappings for all indexes and types $ret = $client->indices()->getMapping(); // Get mappings for all types in ‘my_index‘ $params[‘index‘] = ‘my_index‘; $ret = $client->indices()->getMapping($params); // Get mappings for all types of ‘my_type‘, regardless of index $params[‘type‘] = ‘my_type‘; $ret = $client->indices()->getMapping($params); // Get mapping ‘my_type‘ in ‘my_index‘ $params[‘index‘] = ‘my_index‘; $params[‘type‘] = ‘my_type‘ $ret = $client->indices()->getMapping($params); // Get mappings for two indexes $params[‘index‘] = array(‘my_index‘, ‘my_index2‘); $ret = $client->indices()->getMapping($params);
在索引命名空间中还有其他一定数量的API允许你管理elasticsearch 的索引(添加删除模版、刷新段、关闭索引等)。
如果你使用IDE自动匹配时,你能够轻松的键入命名空间:
$client->indices()->
仔细阅读列表中可用的方法。查看 \Elasticsearch\Namespaces\Indices.php 文件,会显示一个完整的可用的方法列表(以及参数列表和注释)。
标签:
原文地址:http://www.cnblogs.com/sandea/p/5685347.html