索引操作

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

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

创建一个索引

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

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

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

  1. $client = new Elasticsearch\Client();
  2. $indexParams['index']  = 'my_index';
  3. // Index Settings
  4. $indexParams['body']['settings']['number_of_shards']   = 3;
  5. $indexParams['body']['settings']['number_of_replicas'] = 2;
  6. // Example Index Mapping
  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. // Create the index
  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. // Get settings for one index
  2. $params['index'] = 'my_index';
  3. $ret = $client->indices()->getSettings($params);
  4. // Get settings for several indexes
  5. $params['index'] = array('my_index', 'my_index2');
  6. $ret = $client->indices()->getSettings($params);

设置API映射

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

  1. // Set the index and type
  2. $params['index'] = 'my_index';
  3. $params['type']  = 'my_type2';
  4. // Adding a new type to an existing index
  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. // Update the index mapping
  21. $client->indices()->putMapping($params);

获取API映射

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

  1. // Get mappings for all indexes and types
  2. $ret = $client->indices()->getMapping();
  3. // Get mappings for all types in 'my_index'
  4. $params['index'] = 'my_index';
  5. $ret = $client->indices()->getMapping($params);
  6. // Get mappings for all types of 'my_type', regardless of index
  7. $params['type'] = 'my_type';
  8. $ret = $client->indices()->getMapping($params);
  9. // Get mapping 'my_type' in 'my_index'
  10. $params['index'] = 'my_index';
  11. $params['type']  = 'my_type'
  12. $ret = $client->indices()->getMapping($params);
  13. // Get mappings for two indexes
  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 索引操作的更多相关文章

  1. ElasticSearch+Kibana 索引操作

    ElasticSearch+Kibana 索引操作 一 前言 ElasticiSearch 简介 ElasticSearch是一个基于Lucene的搜索服务器.它提供了一个分布式多用户能力的全文搜索引 ...

  2. elasticsearch的索引操作和文档操作总结

    参考文档:https://es.xiaoleilu.com/010_Intro/00_README.html 一.索引操作 1.查看当前节点的所有的index 查看当前节点的所有的index [roo ...

  3. ElasticSearch+Kibana 索引操作( 附源码)

    一 前言 ElasticiSearch 简介 ElasticSearch是一个基于Lucene的搜索服务器.它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口.Elastics ...

  4. elasticsearch java 索引操作

    1.添加maven依赖 <dependency> <groupId>org.elasticsearch</groupId> <artifactId>el ...

  5. elasticsearch的索引操作

    1.创建索引(test_index) curl -XPUT "http://192.168.99.1:9200/test_index" 2.创建索引,指定分片和副本的数量 curl ...

  6. Es图形化软件使用之ElasticSearch-head、Kibana,Elasticsearch之-倒排索引操作、映射管理、文档增删改查

    今日内容概要 ElasticSearch之-ElasticSearch-head ElasticSearch之-安装Kibana Elasticsearch之-倒排索引 Elasticsearch之- ...

  7. ElasticSearch 基本概念 and 索引操作 and 文档操作 and 批量操作 and 结构化查询 and 过滤查询

    基本概念 索引: 类似于MySQL的表.索引的结构为全文搜索作准备,不存储原始的数据. 索引可以做分布式.每一个索引有一个或者多个分片 shard.每一个分片可以有多个副本 replica. 文档: ...

  8. Elasticsearch——多索引的使用

    在Elasticsearch中,一般的查询都支持多索引. 只有文档API或者别名等不支持多索引操作,因此本篇就翻译一下多索引相关的内容. 首先,先插入几条数据: $ curl -XPOST local ...

  9. Elasticsearch-PHP 索引操作(转)

    索引操作 本节通过客户端来介绍一下索引API的各种操作.索引操作包含任何管理索引本身(例如,创建索引,删除索引,更改映射等等). 我们通过一些常见的操作的代码片段来介绍,然后在表格中列出剩下的方法.R ...

  10. Elasticsearch多索引

     在Elasticsearch中,一般的查询都支持多索引.只有文档API或者别名API等不支持多索引操作,因此本篇就翻译一下多索引相关的内容. 首先,先插入几条数据: $ curl -XPOST lo ...

随机推荐

  1. delete和truncate操作

    SQL> --查询表的结构SQL> desc student; 名称 是否为空? 类型 ----------------------------------------- -------- ...

  2. mock的使名用一(生成随机数据)

    Mock.Random 是一个工具类,用于生成各种随机数据. Mock.Random 的方法在数据模板中称为『占位符』,书写格式为 @占位符(参数 [, 参数]) . var Random = Moc ...

  3. Oracle 之 配置HugePages内存

    HugePages是通过使用大页内存来取代传统的4kb内存页面,使得管理虚拟地址数变少,加快了从虚拟地址到物理地址的映射以及通过摒弃内存页面的换入换出以提高内存的整体性能.尤其是对于8GB以上的内存以 ...

  4. gitlab安装、配置与阿里云产品集成

    https://www.ilanni.com/?p=12819 一.gitlab安装与部署 gitlab的安装可以分为源码安装和通过安装包进行安装,要是按照我以前的写作习惯的话,我也会把源码安装在本文 ...

  5. torcs代码

    /** Info returned by driver during the race */ typedef struct { tdble steer; /**< Steer command [ ...

  6. SharePoint2013工作流workflow manager配置

    SharePoint2013版本的工作流较sharepoint 2010变化较大,将工作流部分从sharepoint中分离出来为单独的服务,通过与sharepoint关联使用. SharePoint2 ...

  7. C# WMP 视频播放

    1. C#播放器控件常用的方法介绍 右击工具箱->选择项(I)... -> 显示"选择工具箱项" -> COM组件 -> Windows Media Pla ...

  8. Cannot read property 'setState' of undefined

    You're using function() in your Promise chain, this will change the scope for this. If you're using ...

  9. Unit05: 实战技巧 、 资费列表 、 拦截器

    Unit05: 过滤器解决表单写中文乱码.拦截器 1. 使用过滤器解决表单中文参数值乱码问题 注意: a. 表单提交方式必须为POST. b. 过滤器的编码应该与浏览器端设置的编码一致. 2. 拦截器 ...

  10. C#String地址、拼接性能学习

    String类型不可变.定义string变量时会在堆上分配存储空间,而对该变量进行值变更时会重新分配一个存储空间,且保留原存储空间. 测试思路:获取string类型变量值变更前后的存储空间地址,判断地 ...