初识Elasticsearch,bulk 操作的遇到的那些事
bulk api可以在单个请求中一次执行多个文档的 create 、 index 、 update 或 delete 操作
行为 | 解释 |
---|---|
create | 当文档不存在时创建之。 |
index | 创建新文档或替换已有文档。 |
update | 局部更新文档。 |
delete | 删除一个文档。 |
create 必须制定_id
index 不必指定_id 会自动创建一个_id
例如,一个 delete 请求看起来是这样的: { "delete": { "_index": "website", "_type": "blog", "_id": "" }}
request body 行由文档的 _source 本身组成--文档包含的字段和值。它是 index 和 create 操作所必需的,这是有道理的:你必须提供文档以索引。 它也是 update 操作所必需的,并且应该包含你传递给 update API 的相同请求体: doc 、 upsert 、 script 等等。 删除操作不需要 request body 行。 { "create": { "_index": "website", "_type": "blog", "_id": "" }}
{ "title": "My first blog post" }
Index 如果不指定 _id ,将会自动生成一个 ID : { "index": { "_index": "website", "_type": "blog" }}
{ "title": "My second blog post" }
为了把所有的操作组合在一起,一个完整的 bulk 请求 有以下形式: POST /_bulk
{ "delete": { "_index": "website", "_type": "blog", "_id": "" }}
{ "create": { "_index": "website", "_type": "blog", "_id": "" }}
{ "title": "My first blog post" }
{ "index": { "_index": "website", "_type": "blog" }}
{ "title": "My second blog post" }
{ "update": { "_index": "website", "_type": "blog", "_id": "", "_retry_on_conflict" : } }
{ "doc" : {"title" : "My updated blog post"} } bulk 参考示例:
$params['body'] = [];
//创建或替换文档操作
$params['body'][] = [
'index' => [ #创建或替换
'_index' => 'my_index',
'_type' => 'my_type',
'_id' => 1,
'_routing' => 1,
]
];
$params['body'][] = [
'name' => '杨',
'age' => 23
];
//创建文档操作
$params['body'][] = [
'create' => [ #创建
'_index' => 'my_index',
'_type' => 'my_type',
'_id' => 2,
'_routing' => 2,
]
];
$params['body'][] = [
'name' => '郭',
'age' => 19
];
//局部更新文档操作
$params['body'][] = [
'update' => [ #局部更新
'_index' => 'my_index',
'_type' => 'my_type',
'_id' => 3,
'_routing' => 3,
]
];
$params['body'][] = [
'doc' => [
'age' => 19
]
];
//删除文档操作
$params['body'][] = [
'delete' => [ #删除
'_index' => 'my_index',
'_type' => 'my_type',
'_id' => 4,
'_routing' => 4,
]
];
$client = Elasticsearch\ClientBuilder::create()->setHosts(['127.0.0.1:9200'])->build();
$res = $client->bulk($params);
初识Elasticsearch,bulk 操作的遇到的那些事的更多相关文章
- ELK 学习笔记之 elasticsearch Bulk操作
Bulk操作: Bulk操作用于批量插入数据: 请求体格式: 编辑一个文件:(插入2个新的文档) curl -XPOST 'http://192.168.1.151:9200/library/book ...
- Elasticsearch —— bulk批量导入数据
在使用Elasticsearch的时候,一定会遇到这种场景--希望批量的导入数据,而不是一条一条的手动导入.那么此时,就一定会需要bulk命令! 更多内容参考我整理的Elk教程 bulk批量导入 批量 ...
- elasticsearch bulk
情景介绍 公司2000W的数据从mysql 迁移至elasticsearch,以提供微服务.本文基于elasticsearch-py bulk操作实现数据迁移.相比于elasticsearch-dum ...
- BULK操作减少redo实验
建表: create table sm_histable ( sm_id ), sm_subid ), service_type ), orgton ), orgnpi ), destton ), d ...
- ElasticSearch Index操作源码分析
ElasticSearch Index操作源码分析 本文记录ElasticSearch创建索引执行源码流程.从执行流程角度看一下创建索引会涉及到哪些服务(比如AllocationService.Mas ...
- 使用Spring Data ElasticSearch+Jsoup操作集群数据存储
使用Spring Data ElasticSearch+Jsoup操作集群数据存储 1.使用Jsoup爬取京东商城的商品数据 1)获取商品名称.价格以及商品地址,并封装为一个Product对象,代码截 ...
- Elasticsearch批处理操作——bulk API
Elasticsearch提供的批量处理功能,是通过使用_bulk API实现的.这个功能之所以重要,在于它提供了非常高效的机制来尽可能快的完成多个操作,与此同时使用尽可能少的网络往返. 1.批量索引 ...
- elasticsearch使用操作部分
本片文章记录了elasticsearch概念.特点.集群.插件.API使用方法. 1.elasticsearch的概念及特点.概念:elasticsearch是一个基于lucene的搜索服务器.luc ...
- elasticsearch更新操作问题
elasticsearch在更新的时候,是通过id进行管理的,我们在前台传入id操作,id如果与elasticsearch相同,则覆盖,否则新增一条记录.且elasticsearch中的插入一条记录和 ...
随机推荐
- tpc资料汇总
官方资料 TPC官网 http://www.tpc.org/ 配置文档 大家一起来测试,benchmark起来(MySQL下的TPC-C,TPC-H,TPC-W) http://www.itpub ...
- 自定义UITableViewCell上的delete按钮
http://blog.csdn.net/xiaoxuan415315/article/details/7834940
- svn tree confflect
同事提交了一些文件,我尝试更新那个目录, 却总是无法更新到他的提交, 一直都是工作空间的内容.而且资源管理器的目录图标显示, 出现变动(就是右上角有个红色的那种). 难道同事没有提交成功吗? 检查sv ...
- 【ASP.NET 插件】Plupload多格式多文件上传实现
由于工作需求,要实现一个多格式多文件的上传功能,而且需要.NET版本的,嘿嘿,终于还是实现了,网上搜了很久,找到一篇不错的博文:WEB版一次选择多个文件进行批量上传(Plupload)的解决方案,在此 ...
- 机器学习入门-文本数据-构造Ngram词袋模型 1.CountVectorizer(ngram_range) 构建Ngram词袋模型
函数说明: 1 CountVectorizer(ngram_range=(2, 2)) 进行字符串的前后组合,构造出新的词袋标签 参数说明:ngram_range=(2, 2) 表示选用2个词进行前后 ...
- day24-抽象类与接口类
接口类 1.继承有两种用途:一:继承基类的方法,并且做出自己的改变或者扩展(代码重用) 二:声明某个子类兼容于某基类,定义一个接口类,接口类中定义了一些接口名(就是函数名)且并未实现接口的功能,子类继 ...
- jsfl 导出指定名称的swf
var _openDOC = fl.openDocument("file:///E|TE/dt.fla"); var _exName = _openDOC.pathURI.spli ...
- jquery元素使用
特殊用法: var formFields = $([]).add(_ele1).add(_ele2); 可将多个元素整合到一个集合中 1.has方法 has()方法查找自己,has为子集条件,即包含 ...
- Linux:使用读写锁使线程同步
基础与控制原语 读写锁 与互斥量类似,但读写锁允许更高的并行性.其特性为:写独占,读共享. 读写锁状态: 一把读写锁具备三种状态: 1. 读模式下加锁状态 (读锁) 2. 写模式下加锁 ...
- java.lang.ClassNotFoundException: org.hibernate.engine.SessionFactoryImplementor
Hibernate4.x与spring3.x整合,有关事务的处理,用Junit4测试,出现org.springframework.beans.factory.BeanCreationException ...