如何记录或打印被调用的python elasticsearch-dsl查询

时间:2015-10-29 09:43:56

标签: elasticsearch elasticsearch-dsl

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

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

例如,喜欢看到发送到elasticsearch的请求体,如下所示:

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

尝试将elasticsearch日志级别引入TRACE。即使这样,也无法看到执行的查询。

1 个答案:

答案 0 :(得分:2)

查看我的博文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的文件。