4

我正在为我的 python 应用程序使用elasticsearch-dsl来查询弹性搜索。

为了调试 elasticsearch-dsl 库实际生成的查询,我无法记录或打印到 elasticsearch 的最终查询。

例如,像这样查看发送到 elasticsearch 的请求正文:

{
    "query": {
        "query_string": {
           "query": "Dav*",
           "fields": ["name", "short_code"],
           "analyze_wildcard": true
        }
    }
}

试图将 elasticsearch 日志级别带到 TRACE。即使那样,也无法看到已执行的查询。

4

1 回答 1

3

在此处查看我的博客文章“索引级别的慢日志设置”部分。基本上,您可以使用 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.

于 2015-10-29T09:55:14.903 回答