在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 的值。
相关推荐
Elasticsearch-Bulk-Insert-Plugin 是一个专为Kettle设计的插件,主要用于高效地将大量数据批量插入到Elasticsearch(ES)集群中。Elasticsearch是一种流行且功能强大的分布式搜索引擎,常用于大数据分析、日志分析...
Java做客户端对Elasticsearch服务的增删改查及批量修改操作,代码简洁易懂,思路清晰有注释.详情参考https://blog.csdn.net/linhaiyun_ytdx/article/category/7042758
在`bulkSaveToEs`方法中,我们使用Elasticsearch的Bulk API进行批量保存,这能显著提高插入效率。`parseLog`方法根据实际日志格式解析并转换日志数据。 为了实现“百万日志秒处理”的目标,我们需要注意优化以下几...
在标题中提到的"elasticsearch-bulk-insert-plugin-8.2.0.0-342.zip"是一个针对Kettle(也称为Pentaho Data Integration)的插件,它允许用户通过Kettle与Elasticsearch进行批量数据插入。Kettle是一款开源的数据...
kettle 支持elasticsearch7.x 批量上传的插件,减压后放到data-integration\plugins 目录下即可
消费kafka数据,然后批量导入到Elasticsearch,本例子使用的kafka版本0.10,es版本是6.4,使用bulk方式批量导入到es中,也可以一条一条的导入,不过比较慢。 <groupId>org.elasticsearch <artifactId>elastic...
Linux环境下使用sqlplus工具将oracle中的数据导入到elasticsearch中。只需要在es_bulk_tool.properties配置sql即可实现数据的批量导入。在elasticsearch6中测试通过。shell脚本需要使用sqlplus。
为了进一步提高批量操作(如插入、更新或删除大量文档)的效率,Elasticsearch 提供了 Bulk API 和 BulkProcessor,通过它们可以有效地提升性能。 #### 二、添加 pom 依赖 在进行 BulkProcessor 的开发之前,首先...
"elasticsearch-bulk-insert-plugin-9"是一个针对Elasticsearch设计的插件,特别适用于Kettle(Pentaho Data Integration)环境,目的是提高数据导入到Elasticsearch的效率。这个插件是针对Elasticsearch 7.16版本...
4. **使用`curl`命令**:在命令行中,使用`curl`发送POST请求到ElasticSearch的 `_bulk` API,这个API专门用于批量操作。 ```bash curl -X POST "localhost:9200/your_index_name/_bulk?pretty" -H 'Content-Type...
es-bulk-update-builder Elasticsearch的批量更新请求主体构建器安装$ npm install --save es-bulk-update-builder用法用法基本上如下: const BulkUpdateBuilder = require ( 'es-bulk-update-builder' ) ;...
6. **性能优化**: 为了提升性能,可以设置映射(Mapping)以控制字段的分析方式,利用 Bulk API 批量操作数据,或者使用Scroll API进行大数量的分页查询。 7. **监控与日志**: 对Elasticsearch的操作应进行日志记录...
3. **数据导入**:使用 Elasticsearch 的 Bulk API 或者 Spring Data Elasticsearch 进行批量数据导入。 4. **分词器选择**:选择合适的分词器,如 IK 分词器,为中文文本提供精确的分词服务。 5. **查询接口设计**...
1. 使用 bulk helper:许多Elasticsearch客户端库提供bulk helper工具,可以帮助你更方便地处理批量写入,自动分块和重试。 2. 并行处理:如果数据源允许,可以并行处理多个批量写入任务,进一步提高效率。 3. 分片...
5. **文档APIs**: 包括Index API、Get API、Delete API、Update API和Bulk API等,这些API用于执行基本的CRUD操作和批量操作。比如,Index API用于创建和更新索引,Get API用于获取文档详情,Delete API用于删除文档...
10. **数据导入与查询**:使用Elasticsearch的`_bulk` API进行批量数据导入,可以大大提高效率。查询时,利用JSON格式的请求体,可以构建复杂的查询条件和聚合分析。 以上内容涵盖了Elasticsearch 7.14.0的基本使用...
Elasticsearch Bulk Insert Plugin,正如其名,是针对Elasticsearch批量插入操作的插件。它能够高效地将大量数据一次性写入Elasticsearch索引,显著提高了数据导入的效率。在ElasticSearch 7.x版本中,由于API和数据...
kettle etl工具中,实现批量导入到 elasticsearch中的插件