elasticsearch,Python,elasticsearch" /> elasticsearch,Python,elasticsearch" />

Python 如何使用elasticsearch获取顶级复合搜索词?

Python 如何使用elasticsearch获取顶级复合搜索词?,python,elasticsearch,Python,elasticsearch,我需要从elasticsearch中获取最热门的搜索词。我们正在使用elasticsearch提供的重要术语功能,但此功能只能获取顶级单词搜索术语。相反,我们需要搜索最热门的多词搜索 目前在elasticsearch中是否有这样做的方法 以下是我们正在使用的相关查询: GET /mentions/_search { "size": 0, "query": { "match": { "snippet": {

我需要从elasticsearch中获取最热门的搜索词。我们正在使用elasticsearch提供的重要术语功能,但此功能只能获取顶级单词搜索术语。相反,我们需要搜索最热门的多词搜索

目前在elasticsearch中是否有这样做的方法

以下是我们正在使用的相关查询:

GET /mentions/_search
{
    "size": 0, 
    "query": {
        "match": {
            "snippet": {
                "query": "#Hashtag"
            }
        }
    },
   "aggs": {
        "trends": {
          "significant_terms": {
            "field": "snippet",
            "size": 1000
          }
        }
      }
}

普通短语问题没有“神奇”的解决方案

然而,我觉得处理这个问题的最佳方法是使用这个概念

基本上,不是为单个单词的文本编制索引(因为顶级术语聚合搜索仅限于索引术语),而是创建一个新的分析器,如果您有具体的想法,可以为您量身定做,或者创建一个我认为可以为您使用的分析器,因为elasticsearch开发人员很聪明(大概是这样的)他们的解决方案可能比你我草率制定的更有效


请注意,我不确定您的规模,但此解决方案将使用更多的磁盘空间,并可能影响其他查询的效率。

我同意Tom的回答,因为没有任何解决方案适用于所有用例。Elasticsearch不知道如何对搜索到的词进行排序,以便为您提供顶级词的列表

例如,如果您正在Elasticsearch实例中存储推文,那么顶级搜索词是否是最受欢迎的?转发次数最多?您是否将这两个指标结合使用,以及推文的发布时间?这实际上取决于您的用例


你可以通过频率来获得最热门的搜索词,但可能你包含了像“and”或“the”这样的词,它们不是很有用。为了防止这种情况,你必须考虑在搜索短语的存储过程中移除停止词,而不仅仅是检索(参见:)。Elasticsearch提供了一套开箱即用的语言分析器,提高了文档语料库的搜索性能(请参见:)。

您是否介意分享您的数据?具体来说,“平均”代码段字段是什么样子的?它是否有一定数量的词头?@tomslabbaert它包含推特的文本或新闻文章的内容。例子:爱上网站\无论你是否喜欢板球,请支持它在传递和平信息中所扮演的角色…