分面搜索与RDMS上的字段相比

时间:2016-06-09 20:03:58

标签: elasticsearch faceted-search

我试图掌握Elasticsearch和其他类型的来龙去脉。对我来说问题一直是所有新的词汇表都没有明显跟踪我已经知道和理解的系统,因此这篇文章。

看起来分面搜索直接类似于在Postgres或任何其他RDBMS上进行字段搜索,但我不确定这是否正确,因为Elasticsearch,我告诉他, '有点'一个NoSQL。这里有人可以直接向我澄清,还是指出一些好的,非常规的解释?

此外,搜索外键关系的类比是什么?或者fk只是另一个" facet"?

感谢。

2 个答案:

答案 0 :(得分:0)

分面搜索是类似于带有aggr.functions的sql groupby的聚合。按字段查询是完全不同的事情。在大多数情况下,没有像ES中的外键那样

答案 1 :(得分:0)

我找到了答案。 1.是的,可以在ES上进行与postgres(PG)的现场搜索密切相关的事情,事实上它一直在进行。实际上,它们在ES上被称为字段,即使你在PG上做什么与在ES上做什么之间没有一对一的对应关系。 这样做的必然结果是,您可以并且可能应该使用两者,用于不同的目的,因为ES不是事务性的。虽然这个人正在教Ruby(我使用Python),但他的视频和脚本使得从PG到ES的同步变得非常容易:https://www.youtube.com/watch?v=uMctvIIgBGY&index=3&list=PLjQo0sojbbxWcy_byqkbe7j3boVTQurf9(第2集映射和同步)。 最后,在这一点上,ES正在弃用“facets”。相反,新的艺术术语是“aggs”,又称“聚合”,在这种情况下,特别是“桶”聚合。请参阅上面提到的Ruby家伙的第7集,以及https://www.youtube.com/watch?v=H4V9ukR5fYQ Elasticsearch - Aggregations。

  1. ES确实支持看起来非常像外键的关系:has_a_child和has_a_parent。更重要的是,你可以使用嵌套来使你的字段/属性/你想要称之为的任何东西与你同步时在PG上的fk相关联。请参阅官方文档以及上述视频:https://www.elastic.co/guide/en/elasticsearch/reference/current/nested.html