分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 代码编程

Elasticsearch-PHP 索引操作

发布时间:2023-09-06 01:17责任编辑:白小东关键词:PHP

索引操作

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

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

创建一个索引

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

  1. $client=newElasticsearch\Client();
  2. $indexParams[‘index‘]=‘my_index‘;//index
  3. $client->indices()->create($indexParams);


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

  1. $client=newElasticsearch\Client();
  2. $indexParams[‘index‘]=‘my_index‘;
  3. //IndexSettings
  4. $indexParams[‘body‘][‘settings‘][‘number_of_shards‘]=3;
  5. $indexParams[‘body‘][‘settings‘][‘number_of_replicas‘]=2;
  6. //ExampleIndexMapping
  7. $myTypeMapping=array(
  8. ‘_source‘=>array(
  9. ‘enabled‘=>true
  10. ),
  11. ‘properties‘=>array(
  12. ‘first_name‘=>array(
  13. ‘type‘=>‘string‘,
  14. ‘analyzer‘=>‘standard‘
  15. ),
  16. ‘age‘=>array(
  17. ‘type‘=>‘integer‘
  18. )
  19. )
  20. );
  21. $indexParams[‘body‘][‘mappings‘][‘my_type‘]=$myTypeMapping;
  22. //Createtheindex
  23. $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. $ret=$client->indices()->putSettings($params);

获取API配置

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

  1. //Getsettingsforoneindex
  2. $params[‘index‘]=‘my_index‘;
  3. $ret=$client->indices()->getSettings($params);
  4. //Getsettingsforseveralindexes
  5. $params[‘index‘]=array(‘my_index‘,‘my_index2‘);
  6. $ret=$client->indices()->getSettings($params);

设置API映射

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

  1. //Settheindexandtype
  2. $params[‘index‘]=‘my_index‘;
  3. $params[‘type‘]=‘my_type2‘;
  4. //Addinganewtypetoanexistingindex
  5. $myTypeMapping2=array(
  6. ‘_source‘=>array(
  7. ‘enabled‘=>true
  8. ),
  9. ‘properties‘=>array(
  10. ‘first_name‘=>array(
  11. ‘type‘=>‘string‘,
  12. ‘analyzer‘=>‘standard‘
  13. ),
  14. ‘age‘=>array(
  15. ‘type‘=>‘integer‘
  16. )
  17. )
  18. );
  19. $params[‘body‘][‘my_type2‘]=$myTypeMapping2;
  20. //Updatetheindexmapping
  21. $client->indices()->putMapping($params);

获取API映射

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

  1. //Getmappingsforallindexesandtypes
  2. $ret=$client->indices()->getMapping();
  3. //Getmappingsforalltypesin‘my_index‘
  4. $params[‘index‘]=‘my_index‘;
  5. $ret=$client->indices()->getMapping($params);
  6. //Getmappingsforalltypesof‘my_type‘,regardlessofindex
  7. $params[‘type‘]=‘my_type‘;
  8. $ret=$client->indices()->getMapping($params);
  9. //Getmapping‘my_type‘in‘my_index‘
  10. $params[‘index‘]=‘my_index‘;
  11. $params[‘type‘]=‘my_type‘
  12. $ret=$client->indices()->getMapping($params);
  13. //Getmappingsfortwoindexes
  14. $params[‘index‘]=array(‘my_index‘,‘my_index2‘);
  15. $ret=$client->indices()->getMapping($params);

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

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

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

  1. $client->indices()->

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

Elasticsearch-PHP 索引操作

原文地址:http://www.cnblogs.com/crystaltu/p/7657331.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved