首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >ElasticSearch中的子查询

ElasticSearch中的子查询
EN

Stack Overflow用户
提问于 2017-02-14 06:09:51
回答 2查看 1.9K关注 0票数 0

在弹性搜索中,我需要用户In是执行另一个elasticsearch查询结果的所有文档,如下所示

代码语言:javascript
运行
复制
{
"size": 200,
"query": {
    "bool": {
        "must": {
            "match": {
                "targetId": {
                    "query": 1234
                }
            }
        }
    }
},
"_source": {
    "includes": [
        "userId"
    ],
    "excludes": []
}
}

如果在sql中执行,将有一个与下面的查询类似的查询。

代码语言:javascript
运行
复制
select * from mytable where userId in (select userId from mytable where targetId = 1234);

但我无法形成类似的elasticsearch查询,在elasticsearch中是否还有其他实现子查询的方法。

为了详细说明这个问题,我添加了下面的数据

代码语言:javascript
运行
复制
"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的文档。

在一个查询中是否有其他方法来完成它。

EN

Stack Overflow用户

发布于 2017-02-14 20:04:54

除了本机方式之外,还有使用SIREn连接插件的可能性。

票数 0
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42219053

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档