Elasticsearch-PHP 索引操作2
索引操作
索引在客户端非常容易。因为关联数组很容易转换为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);
Elasticsearch-PHP 索引操作2的更多相关文章
- ElasticSearch+Kibana 索引操作
ElasticSearch+Kibana 索引操作 一 前言 ElasticiSearch 简介 ElasticSearch是一个基于Lucene的搜索服务器.它提供了一个分布式多用户能力的全文搜索引 ...
- elasticsearch的索引操作和文档操作总结
参考文档:https://es.xiaoleilu.com/010_Intro/00_README.html 一.索引操作 1.查看当前节点的所有的index 查看当前节点的所有的index [roo ...
- ElasticSearch+Kibana 索引操作( 附源码)
一 前言 ElasticiSearch 简介 ElasticSearch是一个基于Lucene的搜索服务器.它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口.Elastics ...
- elasticsearch java 索引操作
1.添加maven依赖 <dependency> <groupId>org.elasticsearch</groupId> <artifactId>el ...
- elasticsearch的索引操作
1.创建索引(test_index) curl -XPUT "http://192.168.99.1:9200/test_index" 2.创建索引,指定分片和副本的数量 curl ...
- Es图形化软件使用之ElasticSearch-head、Kibana,Elasticsearch之-倒排索引操作、映射管理、文档增删改查
今日内容概要 ElasticSearch之-ElasticSearch-head ElasticSearch之-安装Kibana Elasticsearch之-倒排索引 Elasticsearch之- ...
- ElasticSearch 基本概念 and 索引操作 and 文档操作 and 批量操作 and 结构化查询 and 过滤查询
基本概念 索引: 类似于MySQL的表.索引的结构为全文搜索作准备,不存储原始的数据. 索引可以做分布式.每一个索引有一个或者多个分片 shard.每一个分片可以有多个副本 replica. 文档: ...
- Elasticsearch——多索引的使用
在Elasticsearch中,一般的查询都支持多索引. 只有文档API或者别名等不支持多索引操作,因此本篇就翻译一下多索引相关的内容. 首先,先插入几条数据: $ curl -XPOST local ...
- Elasticsearch-PHP 索引操作(转)
索引操作 本节通过客户端来介绍一下索引API的各种操作.索引操作包含任何管理索引本身(例如,创建索引,删除索引,更改映射等等). 我们通过一些常见的操作的代码片段来介绍,然后在表格中列出剩下的方法.R ...
- Elasticsearch多索引
在Elasticsearch中,一般的查询都支持多索引.只有文档API或者别名API等不支持多索引操作,因此本篇就翻译一下多索引相关的内容. 首先,先插入几条数据: $ curl -XPOST lo ...
随机推荐
- hdfs会出现的一些问题
实训的第一篇博客献给坑了我的hdfs…… 由于电脑的原因,突然花屏,虚拟机来不及挂起.之后发现50070端口进不去,查看jps进程发现没有namenode 先用stop-all.sh命令再start还 ...
- Python学习-类
类是对象的模板或蓝图,类是对象的抽象化,对象是类的实例化 在python中,一个对象的特征也称为属性(attribute),它所具有的的行为也称为方法(method) 对象 = 属性(特征)+方法(行 ...
- Java Garbage Collection
在C/C++中,需要自己负责object的creation 和 destruction. 如果忘记了destruction, 就容易出现OutOfMemoryErrors. Java中会有GC直接处理 ...
- ballerina 学习二 ballerina 命令参数
1. 目前支持的命令 run Run Ballerina program build Compile Ballerina program install Install packages to ho ...
- Cockpit 服务化管理工具
Cockpit 是红帽开发的网页版图像化服务管理工具,优点是无需中间层,且可以管理多种服务. 根据其项目主站描述,Cockpit 有如下特点: 从易用性考虑设计,方便管理人员使用,而不是仅仅的终端命令 ...
- JS实现动态提示框
引言 什么项目都有个需求,应开发需求,需要写一个公式编辑器选择公式的插件,下面给大家讲一下实现过程.(擦汗,强作淡定,咳,开嗓~) 看图说话 本小菜开发功能前乐于先写个需求思维导图(纯属个人爱好): ...
- Eclipse的Java开发中jar导入后无法使用包内class的解决方案
请注意, 本方法只对于自己的包有效, 如果你的类内部互相调用, 此方法会失效, 需要每个类文件都进行一次CTRL+SHIFT+O进行包的导入. 如上图的一个结构, algs4.jar和stdlib.j ...
- jsp_include
jsp__include指令先包含后编译 include 行为 先编译后包含 <jsp:include page="head.jsp"></jsp:include ...
- torcs代码
/** Info returned by driver during the race */ typedef struct { tdble steer; /**< Steer command [ ...
- 生产环境LNMP (果图片)
一. 下载一键安装包 LNMP 官方地址为:http://lnmp.org/ 登陆后运行:screen -S lnmp cd /usr/local/src wget -c http://soft. ...