如何记录或打印被调用的 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.

的文件