ElasticSearch-bulk批量操作增删改查(python实现)

bulk有哪些类型的操作可以执行呢?

# 1.bulk的语法是怎样的呢?
每一个操作要两个json串,语法如下:
{"action": {"metadata"}}
{"data"}
# 2.bulk的操作有以下几种
(1delete:删除一个文档,只要1个json串就可以了
(2)create:PUT /index/type/id/_create,强制创建
(3)index:普通的put操作,可以是创建文档,也可以是全量替换文档
(4)update:执行的partial update操作
`tips`:
bulk api对json的语法,有严格的要求,每个json串不能换行,只能放一行,同时一个json串和一个json串之间,必须有一个换行

基于python实现批量增删改查操作

from elasticsearch import Elasticsearch
from elasticsearch import helpers

es = Elasticsearch(hosts="ip:port")
bulk_list = [
    {
        '_op_type': 'delete',
        '_index': 'test_index',
        '_type': 'test_type',
        '_id': 3,
    },
    {
        '_op_type': 'create',
        '_index': 'test_index',
        '_type': 'test_type',
        '_id': 12,
        "_source": {"test_field": "test12"}
    },
    {
        '_op_type': 'index',
        '_index': 'test_index',
        '_type': 'test_type',
        '_id': 2,
        "_source": {"test_field": "replaced test2"}
    },
    {
        '_op_type': 'update',
        '_index': 'test_index',
        '_type': 'test_type',
        '_id': 1,
        "_retry_on_conflict": 3,
        "doc": {"test_field2": "bulk test1"}
    }

]
result = helpers.bulk(es, bulk_list)
print(result)
# 返回结果如下,表示4条语句执行成功
"""
(4, [])
"""

基于kibana实现批量增删改查操作

POST /_bulk
{ "delete": { "_index": "test_index", "_type": "test_type", "_id": "3" }} 
{ "create": { "_index": "test_index", "_type": "test_type", "_id": "12" }}
{ "test_field":    "test12" }
{ "index":  { "_index": "test_index", "_type": "test_type", "_id": "2" }}
{ "test_field":    "replaced test2" }
{ "update": { "_index": "test_index", "_type": "test_type", "_id": "1", "_retry_on_conflict" : 3} }
{ "doc" : {"test_field2" : "bulk test1"} }
POST /test_index/_bulk
{ "delete": { "_type": "test_type", "_id": "3" }} 
{ "create": { "_type": "test_type", "_id": "12" }}
{ "test_field":    "test12" }
{ "index":  { "_type": "test_type" }}
{ "test_field":    "auto-generate id test" }
{ "index":  { "_type": "test_type", "_id": "2" }}
{ "test_field":    "replaced test2" }
{ "update": { "_type": "test_type", "_id": "1", "_retry_on_conflict" : 3} }
{ "doc" : {"test_field2" : "bulk test1"} }

POST /test_index/test_type/_bulk
{ "delete": { "_id": "3" }} 
{ "create": { "_id": "12" }}
{ "test_field":    "test12" }
{ "index":  { }}
{ "test_field":    "auto-generate id test" }
{ "index":  { "_id": "2" }}
{ "test_field":    "replaced test2" }
{ "update": { "_id": "1", "_retry_on_conflict" : 3} }
{ "doc" : {"test_field2" : "bulk test1"} }
"""
bulk操作中,任意一个操作失败,是不会影响其他的操作的,但是在返回结果里,会告诉你异常日志
"""
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Cocktail_py

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值