内部联接弹性搜索一对多关系

时间:2017-05-15 07:15:20

标签: sql elasticsearch

我有两个具有以下结构的文件

ITEM
{
     ITEM_ID(primary Key),
     ITEM_NAME,
     ITEM_DESCRIPTION
}
ITEMREGULATION
{
     ITEMREGULATION_ID,
     ITEM_ID(Foreign Key),
     ITEMREGULATION_TYPE
}

这些表属于[ITEM] ----- * [ITEMREGULATION]之间的一对多关系。 现在我想对这些数据执行以下sql查询 -

  

从ITEM内部联接ITEMREGULATION选择* ITEM.ITEM_ID = ITEMREGULATION.ITEM_ID。

我在弹性搜索中尝试过嵌套关系,但ITEMREGULATION引用了ITEM,因此它进入无限循环并提供异常 - java.lang.StackOverflowError:null

如何在弹性搜索中获得上述sql查询?

2 个答案:

答案 0 :(得分:0)

你的问题有两个解决方案。

  1. ITEM.ITEM_IDITEMREGULATION.ITEM_ID可能是不同的类型,您可以比较int whit string。

  2. 核心SQL-qustion是

  3. select * from ITEM inner join ITEMREGULATION on ITEM.ITEM_ID = ITEMREGULATION.ITEM_ID.

答案 1 :(得分:0)

最佳实践始终是非常规您的数据(如果可能)。
如果不是,您应该为您定义_parent字段 ITEMREGULATION 。在elasticsearch中定义父子关系提示后,您可以使用has_parent has_child个查询来模拟 elasticsearch 中的加入