在es中我们可能会有这么一种需求,即有时需要批量向es中插入或更新或删除数据,如果一条一条数据的操作,那么速度必然很慢,那么es的bulk api就可以派上用场。
delete 删除操作,只需要写一个json即可
create 创建操作,如果需要创建的文档已经存在,那么创建失败
index 创建或替换操作,如果要创建的文档不存在则执行创建操作,如果已经存在则执行替换操作
update 更新操作 执行文档的更新
#需求:
1、使用create创建编号为21、22、23的文档
2、使用create再次创建编号为22的文档,此时会失败,因为编号为22的文档已经存在
3、使用index创建编号为24、25的文档
4、使用index替换编号为25的文档
5、修改编号为21的文档的数据
6、删除编号为23的文档
curl -XPOST "http://192.168.99.1:9200/_bulk" -d' {"create":{"_index":"productindex","_type":"product","_id":21}} {"name":"21 name","price":21} {"create":{"_index":"productindex","_type":"product","_id":22}} {"name":"22 name","price":22} {"create":{"_index":"productindex","_type":"product","_id":23}} {"name":"23 name","price":23} {"create":{"_index":"productindex","_type":"product","_id":22}} {"name":"id为22的文档已经存在,创建失败","price":22} {"index":{"_index":"productindex","_type":"product","_id":24}} {"name":"文档不存在,被创建","price":24} {"index":{"_index":"productindex","_type":"product","_id":25}} {"name":"21 name","price":25} {"index":{"_index":"productindex","_type":"product","_id":25}} {"name":"由于编号为25的文档已经存在,执行替换操作,price字段的值没有了"} {"update":{"_index":"productindex","_type":"product","_id":21}} {"doc":{"name":"修改编号为21的文档的数据,price字段的值还在"}} {"delete":{"_index":"productindex","_type":"product","_id":23}} '
执行结果,部分。
批量执行完成之后,es会返回每个命令的执行的结果,其中一个命令报错,是不会影响其余的命令继续往下执行的。
在批量执行api下,每个json串需要占据一行,不可将json字符串格式化,否则执行不了。
bulk请求的请求体不建议太大,太大会影响性能。建议不要超过几十兆。如果出现索引队列不够用的时候,就需要调整threadpool.index.queue_size 的值。
相关推荐
Java做客户端对Elasticsearch服务的增删改查及批量修改操作,代码简洁易懂,思路清晰有注释.详情参考https://blog.csdn.net/linhaiyun_ytdx/article/category/7042758
kettle 支持elasticsearch7.x 批量上传的插件,减压后放到data-integration\plugins 目录下即可
从Kafka中批量拉去数据,然后批量更新到es里。一次拉取的数量可以设置,现在是10000,轻松运转,更新到es内部也是,目标是百万日志秒处理
Linux环境下使用sqlplus工具将oracle中的数据导入到elasticsearch中。只需要在es_bulk_tool.properties配置sql即可实现数据的批量导入。在elasticsearch6中测试通过。shell脚本需要使用sqlplus。
消费kafka数据,然后批量导入到Elasticsearch,本例子使用的kafka版本0.10,es版本是6.4,使用bulk方式批量导入到es中,也可以一条一条的导入,不过比较慢。 <groupId>org.elasticsearch <artifactId>elastic...
es-bulk-update-builder Elasticsearch的批量更新请求主体构建器安装$ npm install --save es-bulk-update-builder用法用法基本上如下: const BulkUpdateBuilder = require ( 'es-bulk-update-builder' ) ;...
现有a表和b表,两张mysql数据库的表,需要把两张表的数据取共同字段,合并并导入es中,其中a表共有数据1000条,b表共有数据1200条,a表和b表的主键id都是从1开始递增的,结果导入的时候显示成功导入2200条数据,而...
安装npm install -g elasticsearch-tools 安装后,您将可以使用以下命令行工具:出口 输入用法:es-export-bulk选项es-export-bulk --helpUsage: es-export-bulk [options] Options: -h, --help output usage ...
弹性散装将数据批量添加到ElasticSearch。 它支持来自PostgreSQL,MSSQL,MySQL,MariaDB,SQLite3,文件系统和CSV的数据流开始npm install elasticbulk --save const elasticbulk = require ( 'elasticbulk' ) ;将...
kettle etl工具中,实现批量导入到 elasticsearch中的插件
07_Elasticsearch 批量操作bulk 08_Elasticsearch 版本控制version 09_Elasticsearch 如何做映射mapping 10_Elasticsearch 基本查询 11_Elasticsearch filter查询 12_Elasticsearch 组合查询 13_Logstash 介绍以及...
分布式搜索elasticsearch java API 之(六)--- 批量添加删除索引 9 分布式搜索elasticsearch java API 之(七)--- 与MongoDB同步数据 10 分布式搜索elasticsearch java API 之(八)--- 使用More like this实现...
废话不多说,直接上代码! updateBody = { query:{ range:{ write_date: { gte: 2019-01-15 12:30:17, lte: now } } }, script: { inline: ctx._source.index = params.index, params: { ...}
从文件或stdin中读取数据,然后批量和并行地将其索引到elasticsearch中。 最短的命令是: $ esbulk -index my-index-name < file.ldj 注意:如果批量API的索引压力过高(数十个或数百个并行工作程序,大批处理...
弹性数据集这是一些较小的数据集,可用于与Elasticsearch一起玩。 您只能在R包中容纳这么多数据。 对于Elasticsearch将R客户端,...data.json omdb.json载入ES 这些数据集经过格式化后可以通过批量加载到Elasticsearc
制作的elasticsearch的python客户端例子,包括建索引index及mapping配置资料,添加文档、pipline方式添加文档、bulk方式批量添加文档,查询及查询配置资料,高亮及高亮设置资料
这是log4j2附加程序插件的父项目,能够将日志批量推送到Elasticsearch集群。 最新发布的代码(1.5.x)可用。 项目包括: log4j2-elasticsearch-core实现的框架提供程序 log4j2-elasticsearch-hc与Elasticsearch ...
Elasticsearch 创建索引,利用_bulk批量导入数据案例,accounts.json文件
第三百六十三节,Python分布式爬虫打造搜索引擎Scrapy精讲—elasticsearch(搜索引擎)的mget和bulk批量操作 注意:前面讲到的各种操作都是一次http请求操作一条数据,如果想要操作多条数据就会产生多次请求,所以就有...
生成 3 个日志文件: app.errors.log:一般错误app.log:一般信息elastic.errors.log:错误,由请求返回给elastic