pythonapielasticsearch_elasticsearch python批量api(elasticsearch py)

在尝试使用Python Elasticsearch库进行批量API操作时,遇到了'no requests added'的验证错误。问题出现在调用`es.bulk()`时,提供的body参数不正确。手动构造curl命令同样返回相同的错误。需要调查如何正确提供操作定义和数据以避免此验证失败。
摘要由CSDN通过智能技术生成

我的代码:from elasticsearch import Elasticsearch

es = Elasticsearch()

doc = '''\n {"host":"logsqa","path":"/logs","message":"test test","@timestamp":"2014-10-02T10:11:25.980256","tags":["multiline","mydate_0.005"]} \n'''

result = es.bulk(index="logstash-test", doc_type="test", body=doc)

错误是:No handlers could be found for logger "elasticsearch"

Traceback (most recent call last):

File "./log-parser-perf.py", line 55, in

insertToES()

File "./log-parser-perf.py", line 46, in insertToES

res = es.bulk(index="logstash-test", doc_type="test", body=doc)

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

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

File "/usr/local/lib/python2.7/dist-packages/elasticsearch-1.0.0-py2.7.egg/elasticsearch/client/__init__.py", line 570, in bulk

params=params, body=self._bulk_body(body))

File "/usr/local/lib/python2.7/dist-packages/elasticsearch-1.0.0-py2.7.egg/elasticsearch/transport.py", line 274, in perform_request

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

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

self._raise_error(response.status, raw_data)

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

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

elasticsearch.exceptions.TransportError: TransportError(500, u'ActionRequestValidationException[Validation Failed: 1: no requests added;]')

为POST call生成的url是/logstash-test/test/_bulk

柱体是:{"host":"logsqa","path":"/logs","message":"test

test","@timestamp":"2014-10-02T10:11:25.980256","tags":["multiline","mydate_0.005"]}

所以我用手把车卷起来:

这种卷曲不起作用:> curl -XPUT http://localhost:9200/logstash-test/test2/_bulk -d

> '{"host":"logsqa","path":"/logs","message":"test

> test","@timestamp":"2014-10-02T10:11:25.980256","tags":["multiline","mydate_0.005"]}

> '

>

> {"error":"ActionRequestValidationException[Validation Failed: 1: no requests added;]","status":500}

所以错误是部分正常的,但是我确实希望elasticsearch.bulk()能够正确地管理输入参数。

pythonf函数是:bulk(*args, **kwargs)

:arg body: The operation definition and data (action-data pairs), as

either a newline separated string, or a sequence of dicts to

serialize (one per row).

:arg index: Default index for items which don't provide one

:arg doc_type: Default document type for items which don't provide one

:arg consistency: Explicit write consistency setting for the operation

:arg refresh: Refresh the index after performing the operation

:arg routing: Specific routing value

:arg replication: Explicitly set the replication type (default: sync)

:arg timeout: Explicit operation timeout

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值