`

elasticsearch的bulk(批量)操作

阅读更多

    在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  的值。

  • 大小: 229.6 KB
分享到:
评论

相关推荐

    elasticsearch-bulk-insert-plugin.zip

    Elasticsearch-Bulk-Insert-Plugin 是一个专为Kettle设计的插件,主要用于高效地将大量数据批量插入到Elasticsearch(ES)集群中。Elasticsearch是一种流行且功能强大的分布式搜索引擎,常用于大数据分析、日志分析...

    Java做客户端对Elasticsearch服务的增删改查及批量修改操作

    Java做客户端对Elasticsearch服务的增删改查及批量修改操作,代码简洁易懂,思路清晰有注释.详情参考https://blog.csdn.net/linhaiyun_ytdx/article/category/7042758

    springBoot整合kafka和elasticSearch,实现批量拉取日志以及批量更新到es里

    在`bulkSaveToEs`方法中,我们使用Elasticsearch的Bulk API进行批量保存,这能显著提高插入效率。`parseLog`方法根据实际日志格式解析并转换日志数据。 为了实现“百万日志秒处理”的目标,我们需要注意优化以下几...

    elasticsearch-bulk-insert-plugin-8.2.0.0-342.zip

    在标题中提到的"elasticsearch-bulk-insert-plugin-8.2.0.0-342.zip"是一个针对Kettle(也称为Pentaho Data Integration)的插件,它允许用户通过Kettle与Elasticsearch进行批量数据插入。Kettle是一款开源的数据...

    elasticsearch-bulk-insert-plugin-8.x-es7.x.x.zip

    kettle 支持elasticsearch7.x 批量上传的插件,减压后放到data-integration\plugins 目录下即可

    java语言kafka数据批量导入到Elasticsearch实例

    消费kafka数据,然后批量导入到Elasticsearch,本例子使用的kafka版本0.10,es版本是6.4,使用bulk方式批量导入到es中,也可以一条一条的导入,不过比较慢。 <groupId>org.elasticsearch <artifactId>elastic...

    Oracle数据批量导入elasticsearch脚本

    Linux环境下使用sqlplus工具将oracle中的数据导入到elasticsearch中。只需要在es_bulk_tool.properties配置sql即可实现数据的批量导入。在elasticsearch6中测试通过。shell脚本需要使用sqlplus。

    Elasticsearch BulkProcessor 的具体实现.pdf

    为了进一步提高批量操作(如插入、更新或删除大量文档)的效率,Elasticsearch 提供了 Bulk API 和 BulkProcessor,通过它们可以有效地提升性能。 #### 二、添加 pom 依赖 在进行 BulkProcessor 的开发之前,首先...

    elasticsearch-bulk-insert-plugin-9插件,支持ES7.16

    "elasticsearch-bulk-insert-plugin-9"是一个针对Elasticsearch设计的插件,特别适用于Kettle(Pentaho Data Integration)环境,目的是提高数据导入到Elasticsearch的效率。这个插件是针对Elasticsearch 7.16版本...

    curl.rar ElasticSearch 批量导入一批数据

    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的批量更新请求主体构建器

    es-bulk-update-builder Elasticsearch的批量更新请求主体构建器安装$ npm install --save es-bulk-update-builder用法用法基本上如下: const BulkUpdateBuilder = require ( 'es-bulk-update-builder' ) ;...

    基于.netcore搜索封装ElasticSearch.zip

    6. **性能优化**: 为了提升性能,可以设置映射(Mapping)以控制字段的分析方式,利用 Bulk API 批量操作数据,或者使用Scroll API进行大数量的分页查询。 7. **监控与日志**: 对Elasticsearch的操作应进行日志记录...

    elasticsearch-6.8.0+elasticsearch-analysis-ik-6.8.0 .zip

    3. **数据导入**:使用 Elasticsearch 的 Bulk API 或者 Spring Data Elasticsearch 进行批量数据导入。 4. **分词器选择**:选择合适的分词器,如 IK 分词器,为中文文本提供精确的分词服务。 5. **查询接口设计**...

    批量写入数据到Elasticsearch

    1. 使用 bulk helper:许多Elasticsearch客户端库提供bulk helper工具,可以帮助你更方便地处理批量写入,自动分块和重试。 2. 并行处理:如果数据源允许,可以并行处理多个批量写入任务,进一步提高效率。 3. 分片...

    ElasticSearch Java API 中文文档

    5. **文档APIs**: 包括Index API、Get API、Delete API、Update API和Bulk API等,这些API用于执行基本的CRUD操作和批量操作。比如,Index API用于创建和更新索引,Get API用于获取文档详情,Delete API用于删除文档...

    elasticsearch7.14.0.zip

    10. **数据导入与查询**:使用Elasticsearch的`_bulk` API进行批量数据导入,可以大大提高效率。查询时,利用JSON格式的请求体,可以构建复杂的查询条件和聚合分析。 以上内容涵盖了Elasticsearch 7.14.0的基本使用...

    elasticsearch-bulk-insert-plugin-9.2.0.0-SNAPSHOT.zip

    Elasticsearch Bulk Insert Plugin,正如其名,是针对Elasticsearch批量插入操作的插件。它能够高效地将大量数据一次性写入Elasticsearch索引,显著提高了数据导入的效率。在ElasticSearch 7.x版本中,由于API和数据...

    kettle elasticsearch插件

    kettle etl工具中,实现批量导入到 elasticsearch中的插件

Global site tag (gtag.js) - Google Analytics