如何获得Elasticsearch中搜索量最高的20个查询?

时间:2019-11-18 10:04:13

标签: node.js elasticsearch

我在elasticsearch中存储了用于自动建议的句子。

格式:

{
  "text": "what is temperature in chicago"
}

它正确建议了w或wha或键入的内容。但我想知道是否有什么方法可以从elasticsearch中获取大多数搜索语句。

2 个答案:

答案 0 :(得分:0)

听起来像您需要的是terms聚合:

您的请求正文应如下所示:

        {
            "query": {
                //your query
            },
            "aggs": {
                "common" : {
                    "terms" : { "field" : "text.keyword", "size": 20 }
                }
            }
        }

答案 1 :(得分:0)

如果我正确地回答了您的问题,那么您希望在输入查询时完成最常见的搜索,则可以实现一个简单的解决方案。 只需跟踪用户最终选择的内容(ES文档),然后将其计数器加1即可保持_id的映射。 运行批处理系统/同步/索引ES数据中的该数据将在您的数据中具有计数器值。 在给出建议(即按计数字段排序)时使用此功能。 随着用户开始使用,这将开始正常工作。 您的ES文档看起来像这样。

{    "text":"what is temperature in chicago",
     "count":10

}

我建议这是一个非常原始的解决方案,可以有很多,但是很不错。