我应该使用elasticsearch进行非自由文本搜索

时间:2013-11-18 20:06:18

标签: postgresql elasticsearch

我使用Postgres作为数据仓库。我需要在许多领域进行自由文本搜索。我的DBA建议不要使用Postgres进行自由文本搜索。我现在正在考虑弹性搜索。问题是如果用户通过自由文本和一些结构化维度过滤两者,该怎么办。我应该查询弹性和postgres并采取交集,还是我可以提供弹性的所有查询?如果过滤器中没有自由文本怎么办?弹性是否适合我的通用查询?

编辑:根据要求提供更多信息。数据库将包含几百万行。我不能提供有关数据的具体细节,除了一行包含~30列,其中一半是字符串,一个单词和几个句子之间。使用弹性的原因不仅仅是DBA对postgres中全文索引的反对,而且弹性也给出了结果排名和特定文本搜索语义。

1 个答案:

答案 0 :(得分:1)

弹性搜索确实适用于全文搜索,因为它使用了lucene,但它对于filters的结构化搜索也非常有用。您可以用它做的另一件好事是数据分析,它允许可视化数据的聚合。

尽管如此,为了充分利用elasticsearch,您不一定需要全文搜索要求。有许多用例,其中elasticsearch仅用于我提到的这三个方面之一:全文搜索,结构化搜索或数据分析。下一步也是将它们结合在一起。

您的用例很常见,我建议继续考虑对弹性搜索运行结构化查询,而不是查询两个系统。我可以预见的唯一障碍可能是文档关系,需要在弹性搜索中正确表示和处理。

查看elasticsearch query DSL,用于表示查询,并有效地将结构化和非结构化搜索结合在一起。