索引操作

本节通过客户端来介绍一下索引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. Objective-C的属性和成员变量用法及关系浅析

    在使用Objective-C语言进行了一段时间的iOS开发之后,发现自己的语言基础相对薄弱,于是开始弥补自己的短处.我发现在用过一种语言之后,再回过头来看它的很多原理会发现有更加深刻的理解.下面就对一 ...

  2. Quartz 2D编程指南(5) - 变换(Transforms)

    Quartz 2D 绘制模型定义了两种独立的坐标空间:用户空间(用于表现文档页)和设备空间(用于表现设备的本地分辨率).用户坐标空间用浮点数表示坐标,与设备空间的像素分辨率没有关系.当我们需要一个点或 ...

  3. 站点 1访问非本站点下面的web.config文件需要的权限

    站点1网站权限,这里就不多介绍了. web.config文件权限 : 需要iis_iusrs (iis权限),  否则没办法访问到

  4. Django 向数据表中添加字段方法

    在模型order中添加字段discount字段,并给予初始值0 方法: 先在models.py中修改模型 添加 discount = models.DecimalField(max_digits=8, ...

  5. Ubuntu下环境变量设置

    [内容来自网络] 相应配置文件介绍: 1) /etc/profile :在登录时,操作系统定制用户环境使用的第一个文件,此文件为系统的每个用户设置环境信息,当用户第一次登录时,改文件被执行 2) /e ...

  6. matlab中卷积编码参数的理解

    poly2trellis(7, [171 133])代表什么意思呢?首先是7,他是1*k的vector,此处k为1,[171 133]是k*n的vector,此处n就是2,那么这个编码就是1/2码率的 ...

  7. lapis 框架安装试用

    备注:     此次安装使用的是openresty 的openresty-1.11.2.1(openresty-1.11.2.1.tar.gz,最新版本存在cjson 包的问题 )   同时对于lua ...

  8. 网站SEO知识

    http://seo.chinaz.com/ 这是综合查询的 site:www.hr246.com 可以查看百度收录的情况 参照贪玩游戏来搞 http://www.tanwan.com http:// ...

  9. bootstrap常用模态框

    <!-- 触发器(button) --> <button class="btn btn-xs btn-success" data-toggle="mod ...

  10. 数据结构与算法JavaScript描述——列表

    1.列表的抽象数据类型定义   2.实现列表类: 2.1 append:给列表添加元素: 2.2 remove: 从列表中删除元素: 2.3 find方法: 2.4 length:列表中有多少个元素: ...