我可以从另一个查询的数据向 Elasticsearch Kibana 查询添加计算的布尔列吗?

问题描述

假设我们有一个弹性索引,我们想要获取该索引的所有文档和一个计算字段,其结果是过滤不同的弹性索引。

我会在 sql 代码中更好地解释这一点,因此即使 Elastic 是 Nosql,我也可以分享目标:

select id,name,(id IN (select customer_id from invoices where customer_id = 123)) as hasBought
from customers;

解决方法

Elasticsearch 不支持表连接。您需要以一种或另一种方式对数据进行非规范化,即使它会导致数据重复。这就是像 ES 一样的 NoSQL 的“缺点”。

引用 docs

在像 Elasticsearch 这样的分布式系统中执行完整的 SQL 风格的连接是非常昂贵的。相反,Elasticsearch 提供了两种形式的连接,旨在水平扩展。