如何记录或打印被调用的 python elasticsearch-dsl 查询
how to log or print python elasticsearch-dsl query that gets invoked
我正在为我的 python 应用程序使用 elasticsearch-dsl 来查询弹性搜索。
为了调试 elasticsearch-dsl 库实际生成的查询,我无法记录或打印进入 elasticsearch 的最终查询。
比如喜欢看到发送到elasticsearch的请求体是这样的:
{
"query": {
"query_string": {
"query": "Dav*",
"fields": ["name", "short_code"],
"analyze_wildcard": true
}
}
}
试图将 elasticsearch 日志级别提高到 TRACE。即便如此,也无法看到已执行的查询。
看看我的博客 post here, "Slowlog settings at index level" 部分。基本上,您可以使用 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
.
的文件
我正在为我的 python 应用程序使用 elasticsearch-dsl 来查询弹性搜索。
为了调试 elasticsearch-dsl 库实际生成的查询,我无法记录或打印进入 elasticsearch 的最终查询。
比如喜欢看到发送到elasticsearch的请求体是这样的:
{
"query": {
"query_string": {
"query": "Dav*",
"fields": ["name", "short_code"],
"analyze_wildcard": true
}
}
}
试图将 elasticsearch 日志级别提高到 TRACE。即便如此,也无法看到已执行的查询。
看看我的博客 post here, "Slowlog settings at index level" 部分。基本上,您可以使用 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
.