Best way to save users search queries in ElasticSearch?

时间:2016-04-15 14:51:52

标签: mysql postgresql elasticsearch lucene full-text-search

I am developing application that uses ElasticSearch and SQL database. So, what is the best way to save users search queries and show statistics like what are the most popular requests? The simply way is to save in SQL database and count. But maybe there are some technique built in ElasticSearch?

1 个答案:

答案 0 :(得分:7)

您可以通过在ES群集中​​创建第二个索引来执行此操作。当用户通过您的应用程序提交搜索时,您执行两个步骤。

  1. 将搜索作为查询提交给Elasticsearch以获取正常搜索行为。
  2. 使用用户提供的搜索字词向群集提交索引请求。
  3. 使用已提交的所有搜索字词的第二个索引,您可以执行许多巧妙的操作。对于您的情况,您可以拥有一个“计数”字段,就像在SQL中一样,随着更多人搜索该术语而增加。另一个很好的用例是谷歌风格推荐条款。您的用户界面可以在每次按键时提交带有输入文本的搜索请求,并使用先前搜索的术语中的点击填充下拉列表。您甚至可以通过添加用户字段并过滤掉不是来自该特定用户的结果来个性化。

    要记住的是,ElasticSearch可以用作主数据存储和辅助数据存储。我总是建议您只保留您愿意丢失的数据(如搜索历史记录)作为主要数据。将您的系统关键数据保存在更传统的SQL数据存储中,这样一来,如果出现任何问题,很容易备份和恢复!