不为失败找理由,要为成功找方法。

ES关联查询,根据结果进行二次/多次查询

Elasticsearch | 作者 silver9527 | 发布于2020年01月10日 | 阅读数:7649

小白,看了点nested和parent/child的东西,发现这个很麻烦啊,还要做映射和修改数据,没办法直接做关联查询吗?第一次查询的结果中取某个字段给参数赋值赋值,作为第二次查询的条件参数这样的
比如这个例子里面
user用户列表
{
"name": "John Smith",
"email": "john@smith.com",
"dob": "1970/10/24"
}

blog博客列表
{
"title": "Relationships",
"body": "It's complicated...",
"user": "John Smith"
}
我先根据查询条件得到一个结果user文档,其中包括name字段值,然后我根据name字段值(例子中为"John Smith" )构建另一个查询,查询这个user的blog,类似变量赋值的概念,或者说查询结果A.name=查询结果B.user,这里可能涉及多个A结果的问题(就是说查询A可能返回很多个name,要每一个都进行B查询导致耗费大量资源)我们暂时不考虑,假定约束每次查询A都只返回少量结果)重点在于,我期望不需要先运行查询A看到结果里面的name字段再人工构建查询B,而是可以在一个查询过程里面将查询A的结果传递给查询B进行调用,这种是否可以实现?
已邀请:
lookup terms可以满足你要求么?
 
官方链接

yuanliangding - 活到老,代码学到老,写到老

赞同来自:

我觉得你的办法确实更好.
用join的类型,插数据的时候,还要rounting.感觉对以后会有坑.

要回复问题请先登录注册