zoukankan      html  css  js  c++  java
  • Elasticsearch-PHP 索引操作

    索引操作

    本节通过客户端来介绍一下索引API的各种操作。索引操作包含任何管理索引本身(例如,创建索引,删除索引,更改映射等等)。

    我们通过一些常见的操作的代码片段来介绍,然后在表格中列出剩下的方法。REST API的参数是相同的,所以它应该很容易执行你所需要的操作。

    创建一个索引

    索引操作都包含在一个独特的命名空间中,和根对象上的方法区分开。举个例子,让我们创建一个索引:

     
    1. $client = new ElasticsearchClient();  
    2. $indexParams['index']  = 'my_index';    //index  
    3.   
    4. $client->indices()->create($indexParams);  


    当然,你可以指定任何通常会被包含在一个新索引创建API的参数。所有参数通常会在请求体,位于请求体的关联数组:

     
    1. $client = new ElasticsearchClient();  
    2. $indexParams['index']  = 'my_index';  
    3.   
    4. // Index Settings  
    5. $indexParams['body']['settings']['number_of_shards']   = 3;  
    6. $indexParams['body']['settings']['number_of_replicas'] = 2;  
    7.   
    8. // Example Index Mapping  
    9. $myTypeMapping = array(  
    10.     '_source' => array(  
    11.         'enabled' => true  
    12.     ),  
    13.     'properties' => array(  
    14.         'first_name' => array(  
    15.             'type' => 'string',  
    16.             'analyzer' => 'standard'  
    17.         ),  
    18.         'age' => array(  
    19.             'type' => 'integer'  
    20.         )  
    21.     )  
    22. );  
    23. $indexParams['body']['mappings']['my_type'] = $myTypeMapping;  
    24.   
    25. // Create the index  
    26. $client->indices()->create($indexParams);  

    创建一个索引(高级例子)

    这是一个更加复杂的创建索引的例子,展示如何定义分析,分词器、过滤器和索引设置。虽然本质上和前面的例子相同,但更复杂的例子可以帮助“现实世界”的客户使用,因为这个特殊的语法很容易陷入困境。

    为简便起见,给出的例子是使用PHP 5.4+版本短数组语法([]而不是array())

    1. $params = [  
    2.     'index' => 'reuters',  
    3.     'body' => [  
    4.         'settings' => [ // 顶级设置包含关于索引(分片等)和分析器的配置  
    5.             'number_of_shards' => 1,  
    6.             'number_of_replicas' => 0,  
    7.             'analysis' => [ // 分析嵌套设置,包含分词器、过滤器、字符过滤器和分析器  
    8.                 'filter' => [  
    9.                     'shingle' => [  
    10.                         'type' => 'shingle'  
    11.                     ]  
    12.                 ],  
    13.                 'char_filter' => [  
    14.                     'pre_negs' => [  
    15.                         'type' => 'pattern_replace',  
    16.                         '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',  
    17.                         'replacement' => '~$1 $2'  
    18.                     ],  
    19.                     'post_negs' => [  
    20.                         'type' => 'pattern_replace',  
    21.                         '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+)',  
    22.                         'replacement' => '$1 ~$2'  
    23.                     ]  
    24.                 ],  
    25.                 'analyzer' => [  
    26.                     'reuters' => [  
    27.                         'type' => 'custom',  
    28.                         'tokenizer' => 'standard',  
    29.                         'filter' => ['lowercase', 'stop', 'kstem']  
    30.                     ]  
    31.                 ]  
    32.             ]  
    33.         ],  
    34.         'mappings' => [ // 映射是另外一个嵌套在body中的顶级元素,包含各种类型的映射  
    35.             '_default_' => [ // 默认类型是动态模版,应用于任何没有明确配置的字段  
    36.                 'properties' => [  
    37.                     'title' => [  
    38.                         'type' => 'string',  
    39.                         'analyzer' => 'reuters',  
    40.                         'term_vector' => 'yes',  
    41.                         'copy_to' => 'combined'  
    42.                     ],  
    43.                     'body' => [  
    44.                         'type' => 'string',  
    45.                         'analyzer' => 'reuters',  
    46.                         'term_vector' => 'yes',  
    47.                         'copy_to' => 'combined'  
    48.                     ],  
    49.                     'combined' => [  
    50.                         'type' => 'string',  
    51.                         'analyzer' => 'reuters',  
    52.                         'term_vector' => 'yes'  
    53.                     ],  
    54.                     'topics' => [  
    55.                         'type' => 'string',  
    56.                         'index' => 'not_analyzed'  
    57.                     ],  
    58.                     'places' => [  
    59.                         'type' => 'string',  
    60.                         'index' => 'not_analyzed'  
    61.                     ]  
    62.                 ]  
    63.             ],  
    64.             'my_type' => [ // my_type类型是一个用户自定义的类型,包含一个my_field字段  
    65.                 'properties' => [  
    66.                     'my_field' => [  
    67.                         'type' => 'string'  
    68.                     ]  
    69.                 ]  
    70.             ]  
    71.         ]  
    72.     ]  
    73. ];  
    74. $client->indices()->create($params);  

    删除一个索引

    删除索引是非常简单的:

     
    1. $deleteParams['index'] = 'my_index';  
    2. $client->indices()->delete($deleteParams);  

    设置API配置

    API设置允许你动态地修改任何索引配置:

     
    1. $params['index'] = 'my_index';  
    2. $params['body']['index']['number_of_replicas'] = 0;  
    3. $params['body']['index']['refresh_interval'] = -1;  
    4.   
    5. $ret = $client->indices()->putSettings($params);  

    获取API配置

    获取APi配置可以现实当前的一个或多个索引的信息:

      

    1. // Get settings for one index  
    2. $params['index'] = 'my_index';  
    3. $ret = $client->indices()->getSettings($params);  
    4.   
    5. // Get settings for several indexes  
    6. $params['index'] = array('my_index', 'my_index2');  
    7. $ret = $client->indices()->getSettings($params);  

    设置API映射

    设置API映射允许你修改或添加一个以存在的索引映射

     
    1. // Set the index and type  
    2. $params['index'] = 'my_index';  
    3. $params['type']  = 'my_type2';  
    4.   
    5. // Adding a new type to an existing index  
    6. $myTypeMapping2 = array(  
    7.     '_source' => array(  
    8.         'enabled' => true  
    9.     ),  
    10.     'properties' => array(  
    11.         'first_name' => array(  
    12.             'type' => 'string',  
    13.             'analyzer' => 'standard'  
    14.         ),  
    15.         'age' => array(  
    16.             'type' => 'integer'  
    17.         )  
    18.     )  
    19. );  
    20. $params['body']['my_type2'] = $myTypeMapping2;  
    21.   
    22. // Update the index mapping  
    23. $client->indices()->putMapping($params);  

    获取API映射

    获取API映射会返回关于索引和类型的详细信息。根据你希望检索的映射,你可以指定索引和类型的组合数目:

     
    1. // Get mappings for all indexes and types  
    2. $ret = $client->indices()->getMapping();  
    3.   
    4. // Get mappings for all types in 'my_index'  
    5. $params['index'] = 'my_index';  
    6. $ret = $client->indices()->getMapping($params);  
    7.   
    8. // Get mappings for all types of 'my_type', regardless of index  
    9. $params['type'] = 'my_type';  
    10. $ret = $client->indices()->getMapping($params);  
    11.   
    12. // Get mapping 'my_type' in 'my_index'  
    13. $params['index'] = 'my_index';  
    14. $params['type']  = 'my_type'  
    15. $ret = $client->indices()->getMapping($params);  
    16.   
    17. // Get mappings for two indexes  
    18. $params['index'] = array('my_index', 'my_index2');  
    19. $ret = $client->indices()->getMapping($params);  

    在索引命名空间中的其他API

    在索引命名空间中还有其他一定数量的API允许你管理elasticsearch 的索引(添加删除模版、刷新段、关闭索引等)。

    如果你使用IDE自动匹配时,你能够轻松的键入命名空间:

     
    1. $client->indices()->  

    仔细阅读列表中可用的方法。查看 ElasticsearchNamespacesIndices.php 文件,会显示一个完整的可用的方法列表(以及参数列表和注释)。

  • 相关阅读:
    求Computational problems associated with Racah algebra
    病理情形
    扫描算法求最大子序列的一次简单非严格证明
    分治法求最大子序列,关于复杂度的一次弱推导
    VFP_等待 rar 命令结束
    Windows_解决win7开机画面变成vista画面的方法
    C#_WinForm的等待窗口
    C#_控件的缩写大全
    SQL Server 2008_基本安装说明
    C#_获取 SQL服务器列表
  • 原文地址:https://www.cnblogs.com/crystaltu/p/7657331.html
Copyright © 2011-2022 走看看