一尘不染

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

elasticsearch

我正在为我的python应用程序使用elasticsearch-
dsl
查询elasticsearch。

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

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

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

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


阅读 365

收藏
2020-06-22

共1个答案

一尘不染

看看我的博客文章在这里
“以指数级Slowlog设置”
一节。基本上,您可以使用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

2020-06-22