我使用Postgres作为数据仓库。我需要在许多字段上进行免费文本搜索。我的DBA建议不要使用Postgres进行免费文本搜索。我现在正在考虑elasticsearch。问题是,如果用户同时通过自由文本和结构化维度进行过滤,该怎么办?我应该同时查询弹性和postgres,并选择交叉口,还是可以从弹性中提供所有查询?如果过滤器中没有免费的文本,那么弹性是否适合我的一般用途查询呢?
编辑:应要求提供更多信息。数据库将包含几百万行。我不能给出关于数据的具体细节,除非一行将包含大约30列,其中一半是字符串,介于一个单词和几个句子之间。使用弹性的原因不仅仅是DBA反对postgres中的全文索引,而且弹性还给出了结果排序和特定的文本搜索语义。
发布于 2013-11-19 12:48:51
的确,elasticsearch非常适合全文搜索,因为它在封面下使用lucene,但它也非常适合通过过滤器进行结构化搜索。你可以用它做的另一件伟大的事情是数据分析,它允许可视化你的数据的聚合。
也就是说,为了更好地利用elasticsearch,您不一定需要全文搜索要求。在许多用法中,elasticsearch仅用于我提到的三个方面之一:全文搜索、结构化搜索或数据分析。下一步也是将它们结合在一起。
您的使用非常普遍,我建议您继续考虑对elasticsearch运行结构化查询,而不是查询两个系统。我能预见到的唯一障碍是文档关系,它需要在elasticsearch中得到正确的表示和处理。
查看一下用于表示查询的elasticsearch 查询DSL,并将结构化搜索和非结构化搜索有效地结合在一起。
https://stackoverflow.com/questions/20056798
复制相似问题