是否有可能在关系方面跨多个指数进行查询?我知道我可以搜索多个索引,但后来我得到两个不相交的结果集。
例如,我有两个索引“customer”和“address”,它们与客户索引中的地址键相关联。我希望在一个查询中让所有名为“John”的客户住在“纽约”。 ES可以“加入”来自地址和客户的两个结果集,并给我所有来自纽约的约翰斯吗?
我觉得Feeling ES并不适用于rdbms风格的Indices加入。不幸的是,将指数扁平化为一个指数并不是一种选择。多次查询也不是一种选择。
非常感谢每一位帮助
答案 0 :(得分:0)
ES是基于文档的No-SQL,因此您无法真正进行本地连接,它不是关系:这就是重点。
在分布式系统中执行完整的SQL样式连接 Elasticsearch非常昂贵。相反,Elasticsearch 提供两种形式的连接,设计用于水平缩放。
https://www.elastic.co/guide/en/elasticsearch/reference/current/joining-queries.html
一种有效的解决方案是复制数据,也称为denormalizing数据,这可以避免连接,但在存储和代码逻辑方面会更重。
从Elasticsearch获得最佳搜索性能的方法是 通过在索引时对数据进行非规范化来按预期使用它。 在每个需要访问的文档中拥有冗余的数据副本 它消除了连接的需要。
阅读:https://www.elastic.co/guide/en/elasticsearch/guide/current/denormalization.html
如果您希望获得最佳搜索速度,请从现有索引重建非规范化索引。