【问题标题】:How can I find the most used query from Elasticsearch?如何从 Elasticsearch 中找到最常用的查询?
【发布时间】:2019-11-13 08:16:36
【问题描述】:

我有一个在 AWS Elasticsearch 实例上运行的 Elasticsearch 集群。它已经运行了几个月。我想知道过去几个月最常用的查询请求。 Elasticsearch 是否将所有查询保存在我可以搜索的地方?还是我必须以编程方式保存分析请求?

【问题讨论】:

  • 您对原始查询是否满意,或者您想要一个规范化的形式(查询中的排序应该没有区别,甚至可能搜索的值也应该被规范化,...)?
  • normalized 表单是什么意思? normalizedraw query 有何不同?理想情况下,我更喜欢原始查询,但如果normalized 查询是可读的,我很好。
  • 抱歉,在 Elasticsearch 意义上没有标准化,但类似于:您有一个布尔查询和两个应该子句。条件的顺序是否应该有所不同,还是您想“规范化”它?
  • 我不想标准化。原始查询对我来说很好

标签: elasticsearch


【解决方案1】:

据我所知,Elasticsearch 默认情况下不会保存所有查询的记录或频率直方图。但是,有一种方法可以让它记录所有查询,然后将日志发送到某个地方以汇总/搜索顶级结果(顺便说一下,这是您可以使用 Elasticsearch 进行的:D)。遗憾的是,您只能在配置后才能跟踪查询,我怀疑您能否找到过去几个月历史查询的任何记录。

为此,您可以利用 Elasticsearch 的慢查询日志。 default thresholds 旨在仅记录慢速查询,但如果您将这些默认设置为 0s,那么 Elasticsearch 会将 any 查询记录为慢速查询,为您提供所有查询的记录。有关详细说明,请参阅上面的链接,您可以在 yaml 配置文件中为整个集群设置此设置,例如

index.search.slowlog.threshold.fetch.debug: 0s

或使用

为每个索引动态设置它
PUT /<my-index-name>/_settings
{
    "index.search.slowlog.threshold.query.debug": "0s"
}

要明确,您选择的日志级别并不重要,但使用debug 可以让您继续记录实际上慢查询在更危险的级别,如infowarn,您可能会觉得很有用。

我不熟悉如何配置 AWS elasticsearch 集群,但以上是我知道的所有版本中的核心 Elasticsearch 设置,应该有办法做到这一点。

祝您搜索愉快!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-05-06
    • 2010-10-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多