Elasticsearch使用Python在控制台上打印PUT语句
我用Python编写了以下代码,以使用ElasticSearch对数据执行搜索:Elasticsearch使用Python在控制台上打印PUT语句,python,
elasticsearch,logging,Python,
elasticsearch,Logging,我用Python编写了以下代码,以使用ElasticSearch对数据执行搜索: def main(): start = (time.time()) es = Elasticsearch() es.indices.create(index='bhar',body = { "settings":{ "analysis":{
def main():
start = (time.time())
es = Elasticsearch()
es.indices.create(index='bhar',body = {
"settings":{
"analysis":{
"analyzer":{
"my_stop_analyzer":{
"type":"custom",
"tokenizer":"standard",
"filter":["english_possessive_stemmer","lowercase","english_stop","english_stemmer"]
}
},
"filter":{
"english_stop":{
"type":"stop",
"stopwords":"_english_"
},
"english_stemmer":{
"type":"stemmer",
"name":"english"
},
"english_possessive_stemmer": {
"type": "stemmer",
"language": "possessive_english"
}
}
}
},
"mappings":{
"my_type":{
"properties":{
"test": {
"type":"text",
"analyzer" : "my_stop_analyzer"
}
}
}
}
})
data = {"rid":"1","test": "This data BHX1 Pick Tower extension"}
res = es.index(index='bhar',doc_type='news',id=1,body=data,refresh=True)
query='pick tower'
match = es.search(index="bhar",body = {
"query": {
"match":{
"test":{
"query":query.replace('|',' '),
"operator" :"AND"
}
}
}
}
)
if match['hits']['total']:
print(match['hits']['hits'][0]['_source'])
if __name__ == '__main__':
main()
执行此代码时,我得到以下输出:
PUThttp://localhost:9200/bhar [状态:400请求:0.027s]
{'rid':'1','test':'This data BHX1 Pick Tower extension'}
如何控制屏幕上的PUT语句?可能会将其发送到日志文件,或者只是不在屏幕上打印。有什么想法吗?感谢阅读。您在屏幕上看到的打印行是由于以下
logger.info()
调用导致的:
如果您不想打印出来,只需使用开关运行代码,即可在执行弹性搜索查询之前添加以下行,然后POST响应将不会记录到日志文件中
logging.getLogger('elasticsearch').setLevel(logging.ERROR)
您可以尝试防止这种情况,但如何首先删除屏幕上的打印?有没有办法做到这一点?这是一个需要调整的日志配置。@Val你能告诉我怎么做吗?
connection/base.py
?我在哪里能找到这个剧本?读我回答的最后一句话是的。我是说,对不起,我没能得到它。我正在努力。我还没有在代码中的任何地方使用日志记录。因此,我感到困惑的是,它不在您的代码中,而是在您正在使用的elasticsearch py
库的代码中。命令行上的开关只是指示elasticsearch py
库使用的日志库不打印任何低于警告级别的内容,其中包括您看到的PUT
语句。是的。我找到了剧本。知道了。我现在将尝试修改它。我还没有看到任何级别选项
logging.getLogger('elasticsearch').setLevel(logging.ERROR)