从别名引用的索引中获取搜索次数最多的术语

Get most searched terms from indexes that are referenced by an alias

搜索指向别名。 索引过程每 5 分钟创建一个新索引。 然后更新别名,指向新的索引。 重新创建索引是为了避免在进行更改时逐项更新时可能出现的同步问题。

但是,我需要跟踪搜索的字词以生成一个仪表板来列出一段时间内搜索次数最多的字词。甚至使用 Kibana show/extract 它。

*搜索的词可以是多个词,比如“white”、“white summer night”等。我们希望对词进行排名,而不是单个词。

我没有使用 Elasticsearch 的经验,我尝试过的搜索没有带来相关的解决方案。

感谢您的帮助!

{
    "actions" : [
        { "remove" : { "index" : "catalog*",       "alias" : "catalog-index" } },
        { "add"    : { "index" : "catalog1234566", "alias" : "catalog-index" } }
    ]
}

映射:

{
   "mappings":{
      "properties":{
         "created_at":{
            "type":"integer"
         },
         "search_terms_key":{
            "type":"keyword"
         }
      }
   }
}

查询:

{
   "query":{
      "match_all":{
         
      }
   },
   "aggs":{
      "search_terms_key":{
         "terms":{
            "field":"search_terms_key",
            "value_type":"string"
         }
      }
   }
}

记录搜索词(或整个查询,如有必要),将其提取到 Elasticsearch 中,然后使用 Kibana 对其进行分析。索引别名配置不相关。

您应该直接从连接到 Elasticsearch 的任何设备或从它与 Elasticsearch 之间的代理获取日志。

可以让 Elasticsearch 本身记录查询,但就性能而言,这通常不是一个好主意。

由于您搜索的是整个字词,因此请务必对搜索字词使用 keyword 映射。

提取搜索词后,使用 terms 聚合来显示最热门的搜索。

[编辑:明确表示需要记录搜索词,而不是完整的 DSL 查询]