如何记录或打印被调用的 python elasticsearch-dsl 查询
Posted
技术标签:
【中文标题】如何记录或打印被调用的 python elasticsearch-dsl 查询【英文标题】:how to log or print python elasticsearch-dsl query that gets invoked 【发布时间】:2016-01-29 09:16:23 【问题描述】:我正在为我的 python 应用程序使用elasticsearch-dsl 来查询弹性搜索。
为了调试 elasticsearch-dsl 库实际生成的查询,我无法记录或打印发送到 elasticsearch 的最终查询。
例如,喜欢看到这样发送到elasticsearch的请求正文:
"query":
"query_string":
"query": "Dav*",
"fields": ["name", "short_code"],
"analyze_wildcard": true
尝试将 elasticsearch 日志级别设置为 TRACE。即使这样,也无法看到已执行的查询。
【问题讨论】:
【参考方案1】:看看我的博文here,“索引级别的慢日志设置”部分。基本上,您可以使用 slowlog 在 Elasticsearch 生成的单独日志文件中打印查询。我建议使用非常低的阈值来查看所有查询。
例如,对于特定索引,类似这样:
PUT /test_index/_settings
"index":
"search.slowlog.level": "trace",
"search.slowlog.threshold.query.trace": "1ms"
或者
PUT /_settings
"index":
"search.slowlog.level": "trace",
"search.slowlog.threshold.query.trace": "1ms"
作为集群范围的设置,适用于所有索引。
查询将记录在您的/logs
位置,一个名为[CLUSTER_NAME]_index_search_slowlog.log
的文件。
【讨论】:
感谢安德烈的回答。这满足了我目前的调试需求。, 谢谢 - 这有帮助。供其他人参考,还有一些补充想法here 我想知道如何关闭慢日志。 “-1”不起作用以上是关于如何记录或打印被调用的 python elasticsearch-dsl 查询的主要内容,如果未能解决你的问题,请参考以下文章