python elasticsearch update_python中的Elasticsearch更新文档

在尝试使用Python的Elasticsearch库更新文档时遇到错误。尝试了两种方法:一是设置_doc_type为'update'并修改_source,二是使用update方法,但都导致RequestError。错误信息提示index和type缺失,以及script或doc缺失。寻求帮助解决Elasticsearch更新文档的正确方法。
摘要由CSDN通过智能技术生成

我正在尝试用elasticsearch python更新文档from elasticsearch import Elasticsearch

from datetime import datetime

from scapy.all import *

import json

# es = Elasticsearch()

es = Elasticsearch(['http://localhost:9200'])

doc = getDoc("1")

print doc

if doc != None:

doc['_op_type'] = 'update'

doc['_source']['macList'].append('new')

helpers.bulk(es, doc, stats_only=False)

但这不管用。有人能告诉我我做错了什么吗?

谢谢

这是错误:Traceback (most recent call last):

File "./req.py", line 48, in

helpers.bulk(es, doc, stats_only=False)

File "/usr/local/lib/python2.7/dist-packages/elasticsearch/helpers/__init__.py", line 188, in bulk

for ok, item in streaming_bulk(client, actions, **kwargs):

File "/usr/local/lib/python2.7/dist-packages/elasticsearch/helpers/__init__.py", line 160, in streaming_bulk

for result in _process_bulk_chunk(client, bulk_actions, raise_on_exception, raise_on_error, **kwargs):

File "/usr/local/lib/python2.7/dist-packages/elasticsearch/helpers/__init__.py", line 89, in _process_bulk_chunk

raise e

elasticsearch.exceptions.RequestError: TransportError(400, u'action_request_validation_exception', u'Validation Failed: 1: index is missing;2: type is missing;3: index is missing;4: type is missing;5: index is missing;6: type is missing;7: index is missing;8: type is missing;9: index is missing;10: type is missing;11: index is missing;12: type is missing;13: index is missing;14: type is missing;')

更新

我尝试过这个:es.update(index='macs', doc_type='users', id="1", body=doc)并且我有这个错误:

回溯(最近一次呼叫时间):File "./req.py", line 50, in

es.update(index='macs', doc_type='users', id="1", body=doc)

File "/usr/local/lib/python2.7/dist-packages/elasticsearch/client/utils.py", line 69, in _wrapped

return func(*args, params=params, **kwargs)

File "/usr/local/lib/python2.7/dist-packages/elasticsearch/client/__init__.py", line 460, in update

doc_type, id, '_update'), params=params, body=body)

File "/usr/local/lib/python2.7/dist-packages/elasticsearch/transport.py", line 329, in perform_request

status, headers, data = connection.perform_request(method, url, params, body, ignore=ignore, timeout=timeout)

File "/usr/local/lib/python2.7/dist-packages/elasticsearch/connection/http_urllib3.py", line 109, in perform_request

self._raise_error(response.status, raw_data)

File "/usr/local/lib/python2.7/dist-packages/elasticsearch/connection/base.py", line 108, in _raise_error

raise HTTP_EXCEPTIONS.get(status_code, TransportError)(status_code, error_message, additional_info)

elasticsearch.exceptions.RequestError: TransportError(400, u'action_request_validation_exception', u'Validation Failed: 1: script or doc is missing;').

邮递员很容易做到,但我真的不明白为什么用Elasticsearch(python)来更新doc。有人想帮忙吗?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值