在弹性搜索中,我需要用户In是执行另一个elasticsearch查询结果的所有文档,如下所示
{
"size": 200,
"query": {
"bool": {
"must": {
"match": {
"targetId": {
"query": 1234
}
}
}
}
},
"_source": {
"includes": [
"userId"
],
"excludes": []
}
}
如果在sql中执行,将有一个与下面的查询类似的查询。
select * from mytable where userId in (select userId from mytable where targetId = 1234);
但我无法形成类似的elasticsearch查询,在elasticsearch中是否还有其他实现子查询的方法。
为了详细说明这个问题,我添加了下面的数据
"hits": [
{
"_index": "idx0",
"_type": "1234",
"_id": "1235-1486716882293",
"_source": {
"targetid": "42644",
"userid": "15784334830333693",
}
},
{
"_index": "idx0",
"_type": "1234",
"_id": "1235-1486716882293",
"_source": {
"data": {
"info":"user data available"
},
"userid": "15784334830333693",
}
},
{
"_index": "idx0",
"_type": "1234",
"_id": "1235-1486716882293",
"_source": {
"data": {
"info":"user data available"
},
"userid": "00000034830333693",
}
}
]
从上面的数据可以看出,用户文档中的数据只包含userid,并且已经达到目标的用户信息存储在另一个具有target和userid的文档中。
要找出已经达到目标的用户,我需要执行两个查询。1.使用我所拥有的targets获取用户,2.从以前的查询中获取所有具有userid的文档。
在一个查询中是否有其他方法来完成它。
发布于 2017-02-14 20:04:54
除了本机方式之外,还有使用SIREn连接插件的可能性。
https://stackoverflow.com/questions/42219053
复制相似问题