我已使用以下代码将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
无效的请求错误,在尝试处理请求时遇到错误:
\ n \ n \ nGET /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缺少URL。
\ n缺少HTTP标识符(HTTP / 1.0)。
\ n请求太大。
< / li> \ nPOST或PUT请求缺少内容长度。
主机名中的字符非法;不允许使用下划线。
HTTP / 1.1预期:正在从HTTP / 1.0软件中询问该功能。
您的缓存管理员是admin @ localhost。
\ n生成的周四, 2018年7月26日7:10:20 GMT by localhost(squid / 3.5.23)
\ n \ n \ n \ n')