【问题标题】:Get most searched terms from indexes that are referenced by an alias从别名引用的索引中获取最多搜索词
【发布时间】:2021-08-06 07:29:18
【问题描述】:

搜索指向一个别名。 索引过程每 5 分钟创建一个新索引。 然后别名被更新,指向新的索引。 如果我们在进行更改时逐项更新,则会重新创建索引以避免同步问题。

但是,我需要跟踪搜索词以生成仪表板来列出一段时间内搜索最多的词。甚至使用 Kibana 来显示/提取它。

*搜索词可以是多个词,例如“白色”、“白色夏夜”等。我们希望对词进行排名,而不是单个词。

我没有使用 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 indexing kibana alias ranking


    【解决方案1】:

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

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

    可以让 Elasticsearch 自己记录查询,但这在性能方面通常是个坏主意。

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

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

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

    【讨论】:

    • 您好,tomr,感谢您的回复。我已经做到了,使用该字段作为关键字并使用聚合每天对其进行汇总。它没有记录查询,只是将 search_term 插入到不同的索引中,然后在一天结束时使用术语聚合从索引中提取它并将结果插入到表中。
    • 好点 - 我已经更新了我的答案,更清楚的是需要记录和摄取的是 搜索词。如果答案有帮助,请按记录的here 投票或接受
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-07
    • 2020-01-18
    • 1970-01-01
    • 2021-10-29
    相关资源
    最近更新 更多