ElasticSearch中批量操作(批量查询_mget、批量插入删除_bulk)

这篇具有很好参考价值的文章主要介绍了ElasticSearch中批量操作(批量查询_mget、批量插入删除_bulk)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

有时候可以通过批量操作来减少网络请求。如:批量查询、批量插入数据。

批量查询_mget

# 当查询的数据都存在时
POST /test/user/_mget

# 请求数据
{
    "ids": [
        "1002",
        "1003"
    ]
}

# 响应结果
{
    "docs": [
        {
            "_index": "test",
            "_type": "user",
            "_id": "1002",
            "_version": 5,
            "_seq_no": 10,
            "_primary_term": 1,
            "found": true,
            "_source": {
                "id": 1002,
                "name": "李四",
                "age": 23,
                "sex": "女"
            }
        },
        {
            "_index": "test",
            "_type": "user",
            "_id": "1003",
            "_version": 1,
            "_seq_no": 11,
            "_primary_term": 1,
            "found": true,
            "_source": {
                "id": 1003,
                "name": "王五",
                "age": 27,
                "sex": "男"
            }
        }
    ]
}

elasticsearch批量删除数据,ElasticSearch,elasticsearch,搜索引擎

当某一条数据不存在,不影响整体响应,需要通过found的值进行判断是否查询到数据。 

# 当查询的数据有不存在的时候
POST /test/user/_mget
# 请求数据
{
    "ids": [
        "1002",
        "1007"
    ]
}


# 响应结果
{
    "docs": [
        {
            "_index": "test",
            "_type": "user",
            "_id": "1002",
            "_version": 5,
            "_seq_no": 10,
            "_primary_term": 1,
            "found": true,
            "_source": {
                "id": 1002,
                "name": "李四",
                "age": 23,
                "sex": "女"
            }
        },
        {
            "_index": "test",
            "_type": "user",
            "_id": "1007",
            "found": false
        }
    ]
}

_bulk操作

        在Elasticsearch中,支持批量的插入、修改、删除操作,都是通过_bulk的api完成的。 请求格式如下:(请求格式不同寻常)

{ action: { metadata }}\n 
{ request body }\n 
{ action: { metadata }}\n 
{ request body }\n 
...

批量插入数据:

{"create":{"_index":"test","_type":"user","_id":2001}} 
{"id":2001,"name":"name1","age": 20,"sex": "男"} 
{"create":{"_index":"test","_type":"user","_id":2002}} 
{"id":2002,"name":"name2","age": 20,"sex": "男"} 
{"create":{"_index":"test","_type":"user","_id":2003}} 
{"id":2003,"name":"name3","age": 20,"sex": "男"}

注意:最后一行要有一个回车。

POST /test/user/_bulk

#请求数据
{"create":{"_index":"test","_type":"user","_id":2001}} 
{"id":2001,"name":"name1","age": 20,"sex": "男"} 
{"create":{"_index":"test","_type":"user","_id":2002}} 
{"id":2002,"name":"name2","age": 20,"sex": "男"} 
{"create":{"_index":"test","_type":"user","_id":2003}} 
{"id":2003,"name":"name3","age": 20,"sex": "男"}


# 响应结果
{
    "took": 12,
    "errors": false,
    "items": [
        {
            "create": {
                "_index": "test",
                "_type": "user",
                "_id": "2001",
                "_version": 1,
                "result": "created",
                "_shards": {
                    "total": 2,
                    "successful": 1,
                    "failed": 0
                },
                "_seq_no": 13,
                "_primary_term": 1,
                "status": 201
            }
        },
        {
            "create": {
                "_index": "test",
                "_type": "user",
                "_id": "2002",
                "_version": 1,
                "result": "created",
                "_shards": {
                    "total": 2,
                    "successful": 1,
                    "failed": 0
                },
                "_seq_no": 14,
                "_primary_term": 1,
                "status": 201
            }
        },
        {
            "create": {
                "_index": "test",
                "_type": "user",
                "_id": "2003",
                "_version": 1,
                "result": "created",
                "_shards": {
                    "total": 2,
                    "successful": 1,
                    "failed": 0
                },
                "_seq_no": 15,
                "_primary_term": 1,
                "status": 201
            }
        }
    ]
}

elasticsearch批量删除数据,ElasticSearch,elasticsearch,搜索引擎

elasticsearch批量删除数据,ElasticSearch,elasticsearch,搜索引擎

 批量删除

{"delete":{"_index":"test","_type":"user","_id":2001}} 
{"delete":{"_index":"test","_type":"user","_id":2002}} 
{"delete":{"_index":"test","_type":"user","_id":2003}}
POST /test/user/_bulk

# 请求数据
{"delete":{"_index":"test","_type":"user","_id":2001}} 
{"delete":{"_index":"test","_type":"user","_id":2002}} 
{"delete":{"_index":"test","_type":"user","_id":2003}}


# 响应数据
{
    "took": 11,
    "errors": false,
    "items": [
        {
            "delete": {
                "_index": "test",
                "_type": "user",
                "_id": "2001",
                "_version": 2,
                "result": "deleted",
                "_shards": {
                    "total": 2,
                    "successful": 1,
                    "failed": 0
                },
                "_seq_no": 16,
                "_primary_term": 1,
                "status": 200
            }
        },
        {
            "delete": {
                "_index": "test",
                "_type": "user",
                "_id": "2002",
                "_version": 2,
                "result": "deleted",
                "_shards": {
                    "total": 2,
                    "successful": 1,
                    "failed": 0
                },
                "_seq_no": 17,
                "_primary_term": 1,
                "status": 200
            }
        },
        {
            "delete": {
                "_index": "test",
                "_type": "user",
                "_id": "2003",
                "_version": 2,
                "result": "deleted",
                "_shards": {
                    "total": 2,
                    "successful": 1,
                    "failed": 0
                },
                "_seq_no": 18,
                "_primary_term": 1,
                "status": 200
            }
        }
    ]
}

elasticsearch批量删除数据,ElasticSearch,elasticsearch,搜索引擎

elasticsearch批量删除数据,ElasticSearch,elasticsearch,搜索引擎

ElasticSearch一次请求多少性能最高?文章来源地址https://www.toymoban.com/news/detail-521471.html

  • 整个批量请求需要被加载到接受我们请求节点的内存里,所以请求越大,给其它请求可用的内存就越小。有一 个最佳的bulk请求大小。超过这个大小,性能不再提升而且可能降低。
  • 最佳大小,当然并不是一个固定的数字。它完全取决于你的硬件、你文档的大小和复杂度以及索引和搜索的负 载。
  • 幸运的是,这个最佳点(sweetspot)还是容易找到的:试着批量索引标准的文档,随着大小的增长,当性能开始 降低,说明你每个批次的大小太大了。开始的数量可以在1000~5000个文档之间,如果你的文档非常大,可以使用较小的批次。
  • 通常着眼于你请求批次的物理大小是非常有用的。一千个1kB的文档和一千个1MB的文档大不相同。一个好的 批次最好保持在5-15MB大小间。

到了这里,关于ElasticSearch中批量操作(批量查询_mget、批量插入删除_bulk)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • elasticsearch批量删除(查询删除)

    注:delete by query只适用于低于elasticsearch2.0的版本(不包含2.0)。有两种形式: 1.无请求体 curl -XDELETE \\\'localhost:9200/twitter/tweet/_query?q=user:kimchy\\\' 2.有请求体 使用请求体的时候,请求体中只能使用query查询,不能使用filter curl -XDELETE \\\'localhost:9200/twitter/tweet/_query\\\' -d \\\'{ \\\"query\\\":{ \\\"term\\\":{\\\"user\\\":\\\"

    2024年02月10日
    浏览(38)
  • ElasticSearch - 批量更新bulk死锁问题排查 | 京东云技术团队

    一、问题系统介绍 监听商品变更MQ消息,查询商品最新的信息,调用BulkProcessor批量更新ES集群中的商品字段信息; 由于商品数据非常多,所以将商品数据存储到ES集群上,整个ES集群共划分了256个分片,并根据商品的三级类目ID进行分片路由。 比如一个SKU的商品名称发生变化,

    2024年02月12日
    浏览(40)
  • Elasticsearch的批量bulk 提交 写入的方式会有顺序问题吗?

    Elasticsearch的分布式特性可能会导致写入操作的执行顺序与提交顺序稍有不同。在分布式环境中,Elasticsearch将数据分散到不同的节点上进行存储和处理,因此写入操作的执行顺序可能会受到网络延迟、负载均衡等因素的影响。 根源在于ES的分布式架构。如上图所示,客户端的

    2024年02月03日
    浏览(47)
  • Spring Boot Elasticsearch7.6.2实现创建索引、删除索引、判断索引是否存在、获取/添加/删除/更新索引别名、单条/批量插入、单条/批量更新、删除数据、递归统计ES聚合的数据

    注意:我的版本是elasticsearch7.6.2、spring-boot-starter-data-elasticsearch-2.5.6 引入依赖 有时候你可能需要查询大批量的数据,建议加上下面配置文件

    2024年02月13日
    浏览(75)
  • java 操作elasticsearch 6.8.0 根据某个条件批量删除数据

    注: 连接es以及依赖相关内容请自行配置,只提供方法。 依赖如下 代码如下

    2024年01月21日
    浏览(50)
  • Elasticsearch Java API 的使用-更新索引(update & upset)与 Bulk的批量更新

    Java更新索引(update upset) update 更新使用UpdateRequest(update类型更新,只能更新) upset 要用IndexRequest设定添加文档,UpdateRequest设定更新文档,设定upset执行有则修改无则更新(upset类型更新,文档不存在时创建) 基于Bulk的批量更新(update upset) 动态的更新一个 documents 中的任

    2024年02月11日
    浏览(51)
  • JAVA elasticsearch批量插入

    目录 耐心看,多看代码中写的注释,keyid是文档中的_id 1.导入包 2.插入格式 3.插入类 --------附录(新增,删除,更新,插入等) 将对象转换为map 创建map --------附录(新增,删除,更新,插入等)

    2024年02月08日
    浏览(44)
  • Elasticsearch 批量插入文档

    本文介绍Elasticsearch中通过单次请求实现批量插入文档。这种方式可以提升性能,通常打开和关闭连接代价比较高,因此最好多次请求仅做一次。 下面示例我们假设系统已经有了索引\\\"myIndex\\\",类型为\\\"person\\\",且映射有name和age两个属性。 简单批量插入 当批量插入所有文档都属于

    2024年02月11日
    浏览(62)
  • 18. ElasticSearch系列之批量插入与更新

    本文介绍工作中Python版常用的高效ES批量插入、更新数据方式 1. 批量插入 2.批量更新 批量更新只需要改动action的以下内容即可 欢迎关注公众号算法小生或沈健的技术博客

    2024年02月11日
    浏览(39)
  • Elasticsearch批量插入数据 java api

    在java代码开发中一般通过client api来对es进行CRUD操作。在想es插入数据时,有时候需要对数据进行批量插入。这时候可以使用bulk来实习批量插入操作,创建一个BulkRequest,接着遍历数据列表,在BulkRequest中添加每一条数据的IndexRequest。由于IndexRequest是插入单条数据,因此每一次

    2024年02月11日
    浏览(55)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包