python连接Elasticsearch报错:NotFoundError HTTPOutputError: Tried to write bytes less than Content-Length

问题重现

Elasticsearch版本:Elasticsearch6.2.2

Python版本:python2.7

报错详情:

2019-09-30 10:26:33 [ERROR]    NotFoundError:
Traceback:
    "/home/wedo/screen_api/__init__.py" line 113, in _process
        self.process(*args, **kwargs)
    "/home/wedo/screen_api/__init__.py" line 454, in wrapper
        return func(handler, *args, **kwargs)
    "/home/wedo/handlers/v1/demo_query.py" line 112, in process
        queryResult = query.execute()
    "/home/wedo/es_engine.py" line 242, in execute
        es_out = es.search(",".join(self.indexs), body=query)
    "/usr/local/lib/python2.7/dist-packages/elasticsearch/client/utils.py" line 76, in _wrapped
        return func(*args, params=params, **kwargs)
    "/usr/local/lib/python2.7/dist-packages/elasticsearch/client/__init__.py" line 636, in search
        doc_type, '_search'), params=params, body=body)
    "/usr/local/lib/python2.7/dist-packages/elasticsearch/transport.py" line 314, in perform_request
        status, headers_response, data = connection.perform_request(method, url, params, body, headers=headers, ignore=ignore, timeout=timeout)
    "/usr/local/lib/python2.7/dist-packages/elasticsearch/connection/http_urllib3.py" line 163, in perform_request
        self._raise_error(response.status, raw_data)
    "/usr/local/lib/python2.7/dist-packages/elasticsearch/connection/base.py" line 125, in _raise_error
        raise HTTP_EXCEPTIONS.get(status_code, TransportError)(status_code, error_message, additional_info)


2019-09-30 10:26:33 [INFO]    [HTTP] 500 GET /v1/demo_query?table=district&filter=pol%3D%E6%9C%88%E6%B5%A6%E9%95%87 (192.168.1.137) 196758.32ms ARGS:filter=['pol=\xe6\x9c\x88\xe6\xb5\xa6\xe9\x95\x87'], table=['district']
2019-09-30 10:26:33 [ERROR]    [WEB-PLUGIN] [UNHANDLED-EXCEPTION] HTTPOutputError: Tried to write 2969 bytes less than Content-Length
Traceback:
    "/home/wedo/python/tornado/web.py" line 1401, in _stack_context_handle_exception
        raise_exc_info((type, value, traceback))
    "/home/wedo/python/tornado/stack_context.py" line 314, in wrapped
        ret = fn(*args, **kwargs)
    "/home/wedo/screen_api/__init__.py" line 122, in _process
        self.send_error(500, reason=msg)
    "/home/wedo/python/tornado/web.py" line 978, in send_error
        self.finish()
    "/home/wedo/python/tornado/web.py" line 933, in finish
        self.request.finish()
    "/home/wedo/python/tornado/httputil.py" line 393, in finish
        self.connection.finish()
    "/home/wedo/python/tornado/http1connection.py" line 440, in finish
        self._expected_content_remaining)

搞了好久,这里记录一下以供参考

解决问题

第一步

把生成的RESTfull语句复制到Kibana里发现是可以的,

第二步

把要查询的索引库复制到Kibana发现也是可以的,

第三步

最后调试发现是连接Elasticsearch的IP地址和端口号变了,

总结

一开始的时候看到NotFoundError还以为是因为索引库没有找到的原因呢,后来又try/catch了一下发现还有一个报错,HTTPOutputError: Tried to write bytes less than Content-Length因为我请求的内容和返回结果会非常非常长,看到这个错误的时候还以为自己的请求参数设置得不对呢,整了一晚上,最后发现是因为Elasticsearch的IP地址和端口号不对,
我这才想起来前天的时候同事说Elasticsearch的配置变了,当时也没有当回事,结果今天的时候就出现了这么一档子事儿,

唉,粗心大意,不当回事啊!今天搞这么久就是这沉重的代价

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值