Elasticsearch-PHP 索引操作
来源:互联网 发布:mac os 哪个版本号 编辑:程序博客网 时间:2024/05/22 03:21
索引操作
索引在客户端非常容易。因为关联数组很容易转换为JSON文档,索引文档只是提供正确和结构性的关联数组和调用方法。
单文档索引
当你索引你个文档时,可以自己提供一个ID,也可以让elasticsearch 为你生成一个ID。
提供一个ID值
$params = array();$params['body'] = array('testField' => 'abc');$params['index'] = 'my_index';$params['type'] = 'my_type';$params['id'] = 'my_id';// Document will be indexed to my_index/my_type/my_id$ret = $client->index($params);
缺省ID值
$params = array();$params['body'] = array('testField' => 'abc');$params['index'] = 'my_index';$params['type'] = 'my_type';// Document will be indexed to my_index/my_type/<autogenerated_id>$ret = $client->index($params);
像大多数其他API一样,还有一些其他参数可以指定。它们在参数数组中指定的就像是索引或类型。例如,让我们设置这个新文档的路由和时间戳。
附加参数
$params = array();$params['body'] = array('testField' => 'xyz');$params['index'] = 'my_index';$params['type'] = 'my_type';$params['routing'] = 'company_xyz';$params['timestamp'] = strtotime("-1d");$ret = $client->index($params);
批量索引
Elasticsearch还支持批量索引文档。客户端也提供一个批量索引的接口,但是并不是很友好的。在未来我们会添加“帮助”方法去简化这个流程。
批量的API方法期待一个批量的body和友好的elasticsearch所期待的是一样的:JSON的 动作/元数据对被新行分割。一个常见的批量操作如下:
使用PHP数组批量索引
for($i = 0; $i < 100; $i++) { $params['body'][] = array( 'index' => array( '_id' => $i ) ); $params['body'][] = array( 'my_field' => 'my_value', 'second_field' => 'some more values' );}$responses = $client->bulk($params);你当然可以使用任何一个批量方法,这里有一个使用upserts的例子:
使用PHP数组进行批量upserting操纵
for($i = 0; $i < 100; $i++) { $params['body'][] = array( 'update' => array( '_id' => $i ) ); $params['body'][] = array( 'doc_as_upsert' => 'true', 'doc' => array( 'my_field' => 'my_value', 'second_field' => 'some more values' ) );}$responses = $client->bulk($params);
批量更新与Nowdocs
如果你是手工的指定块或者是从现有的JSON文件中提取它们,Nowdocs 可能是最好的方法。否则,当你通过算法去构造它们,小心确保使用‘\n"换行符分割每一行,包括最后一行。
批量索引
$params = array();$params['body'] = <<<'EOT'{ "index" : { "_index" : "my_index", "_type" : "my_type", "_id" : "1" } }{ "field1" : "value1" }EOT;$ret = $client->bulk($params);像批量API一样,如果你在参数中制定索引/类型,你可以从批量请求本身省略掉它(这往往可以省略大量的空间和冗余的数据传输)
批量索引 w/ 明确的索引/类型
$params = array();$params['body'] = <<<'EOT'{ "index" : { "_id" : "1" } }{ "field1" : "value1" }EOT;$params['index'] = 'my_index';$params['type'] = 'my_type';$ret = $client->bulk($params);
0 0
- Elasticsearch-PHP 索引操作
- Elasticsearch-PHP 索引操作
- Elasticsearch--索引操作
- elasticsearch-操作索引
- Elasticsearch 索引操作
- ElasticSearch 索引相关操作
- Elasticsearch-PHP 搜索操作
- Elasticsearch索引别名的介绍和操作
- elasticsearch JAVA客户端操作---索引的CURD
- 通过HTTP RESTful API 操作elasticsearch索引
- Elasticsearch索引别名的介绍和操作
- elasticsearch建立索引操作的API
- Elasticsearch索引别名的介绍和操作
- Elasticsearch基于RESTful接口的索引操作
- elasticsearch建立索引操作的API
- Java操作ElasticSearch之创建索引
- ElasticSearch-多索引检索与批量操作
- ElasticSearch索引的相关操作---javaEE--SpringDataElasticSearch
- Java 理论与实践: 非阻塞算法简介--转载
- 常用的机器学习&数据挖掘翻译(转)
- Codevs_P2981 查字典1(BIT)
- 设置video.js多视频连续播放
- yycg之用户身份校验(二)
- Elasticsearch-PHP 索引操作
- 鸟哥的Linux私房菜(基础篇)- 一个简单的 SPFdisk 分割实例
- AS 项目 Gradle DSL method not found: 'runProguard()
- 在php中定义常量时,const与define的区别
- 完美解决IE(IE6/IE7/IE8)不兼容HTML5标签的方法
- android客户端native性能关注&&问题排查
- 并发编程 — 并发数据结构--转载
- 中文域名都有哪些类型?
- C++ STL算法系列3---求和:accumulate