使用python在Elasticsearch查询中进行用户身份验证

May*_*Jha 6 python python-2.7 elasticsearch elasticsearch-plugin elasticsearch-2.0

我正在使用Python进行弹性测试.我的代码看起来像这样: -

from elasticsearch import Elasticsearch

if __name__ == '__main__': 
index="IndexPosition"
es=Elasticsearch(['https://localhost:8080'])
res = es.search(index='{0}'.format(index), doc_type="log",size=1000, from_=0, body={ "query": {
"match": {

    ...Match condition
  }
}
Run Code Online (Sandbox Code Playgroud)

}})

现在,由于体系结构的变化,弹性搜索中添加了用户身份验证.让我们假设用户名 - 用户和密码 - 通过.如何在查询中传递用户名和密码..?

fai*_*din 12

您可以在 url 中传递用户名、密码:

前任:

用户名:弹性

密码:changeme

es = Elasticsearch(hosts="http://elastic:changeme@localhost:9200/")
Run Code Online (Sandbox Code Playgroud)

使用卷曲

curl -X GET "elastic:changeme@localhost:9200/"
Run Code Online (Sandbox Code Playgroud)


小智 10

您需要在获取ES连接时传递用户名和密码,如下所示:

es = Elasticsearch([' http:// localhost:8080 '],http_auth =('user','pass'))


bud*_*mat 5

在 Elasticsearch 8.x 中,该http_auth参数已弃用,分别使用basic_authbearer_auth代替。

Elasticsearch >= 8.x 基本身份验证示例:

es = Elasticsearch(['https://localhost:8080'], basic_auth=('user', 'pass'))
Run Code Online (Sandbox Code Playgroud)

Elasticseach < 8.x 基本身份验证示例:

es = Elasticsearch(['http://localhost:8080'], http_auth=('user', 'pass'))
Run Code Online (Sandbox Code Playgroud)