如何使用Python Elasticsearch在AWS Elasticsearch中进行搜索?

时间:2018-07-26 07:17:41

标签: python elasticsearch elasticsearch-5 aws-elasticsearch

我已使用以下代码将AWS ES与python连接

from aws_requests_auth.aws_auth import AWSRequestsAuth
from elasticsearch import Elasticsearch, RequestsHttpConnection

es_host = 'search-my-es-domain.eu-west-1.es.amazonaws.com'

awsauth = AWS4Auth(YOUR_ACCESS_KEY, YOUR_SECRET_KEY, REGION, 'es')
# use the requests connection_class and pass in our custom auth class
es = Elasticsearch(
    hosts=[{'host': es_host, 'port': 80}],
    http_auth=awsauth,
    use_ssl=True,
    verify_certs=True,
    connection_class=RequestsHttpConnection
)

打印“ es”客户端的信息对象时得到结果。

es.info()

通过以下代码在AWS ES中创建索引后,我存储了一些json。

es.index(index='test_index', doc_type='Test', id='1234444', body={'foo': 'bar', 'test': 'sang'})

如果我使用

这样的查询,则搜索有效
es.search(index='test_index', q='foo')

最后,我尝试使用以下代码搜索数据

es.search(index='test_index', body={"query": {"match_all": {}}})

我遇到错误:

**Undecodable raw error response from server: Expecting value: line 2 column 1 (char 1)

TransportError(411,'\ n \ n \ n \ nERROR:无法检索所请求的URL \ n \ n \ n \ n

ERROR

\ n

\ n \ n
\ n \ n \ n

无效的请求错误,在尝试处理请求时遇到错误:

\ n \ n \ n
GET /test_index/_search HTTP/1.1\nAccept-Encoding: identity\r\nContent-Type: application/json\r\nContent-Length: 28\r\nx-amz-date: 20180726T071020Z\r\nx-amz-content-sha256: 328683bef5f07407759e09894e2785f4017bcd8914592ce04d87cc45b4d3be35\r\nAuthorization: ** NOT DISPLAYED \r\nHost: search-testelasticseach-pkpbravqd4djbi3kjtihsra5ma.us-east-2.es.amazonaws.com\r\n
\ n \ n \ n

一些可能的问题是:

\ n
    \ n

    缺少或未知的请求方法。

    \ n

    缺少URL。

    \ n

    缺少HTTP标识符(HTTP / 1.0)。

    \ n
  • 请求太大。

    < / li> \ n
  • POST或PUT请求缺少内容长度。

  • \ n
  • 主机名中的字符非法;不允许使用下划线。

  • \ n
  • HTTP / 1.1预期:正在从HTTP / 1.0软件中询问该功能。

  • \ n
\ n \ n

您的缓存管理员是admin @ localhost。

\ n
\ n \ n \ n \ nif(\'GET \'!= \'[未知方法] \')document.getElementById(\'missing -method \')。style.display = \'none \'; \ nif(\'http://search-testelasticseach-pkpbravqd4djbi3kjtihsra5ma.us-east-2.es.amazonaws.com/test_index/_search \'!= \'[no URL] \')document.getElementById(\'missing-url \' ).style.display = \'none \'; \ nif(\'http \'!= \' [未知协议] \')document.getElementById(\'missing-protocol \')。style.display = \'none \'; \ n \ n \ n
\ n \ n

生成的周四, 2018年7月26日7:10:20 GMT by localhost(squid / 3.5.23)

\ n \ n \ n \ n')

0 个答案:

没有答案