elasticsearch - ElasticSearch中的子查询

标签 elasticsearch elasticsearch-2.0

在 Elasticsearch 中,我需要所有用户ID是执行这样的另一个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,达到目标的用户信息存储在另一个具有targetid和userid的文档中。

为了找出实现目标的用户,我需要执行两个查询
1.使用我拥有的targetid获取用户ID ES,
2.从先前的查询中获取所有具有用户标识的文档。

还有其他任何方法可以在单个查询中执行此操作。

最佳答案

ES中不允许内部联接。来自RDBMS世界,很难联系,但是关系是速度的权衡。

ES具有各种其他处理关系的方式,在here中进行了详细讨论。

关于elasticsearch - ElasticSearch中的子查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42219053/

相关文章:

Elasticsearch 同一字段上的多个范围过滤器

elasticsearch - ElasticSearch 2.x:more_like_this查询和嵌套对象

amazon-web-services - Elasticsearch Master 未发现异常 - 版本 2.3.0

elasticsearch - Elasticsearch查询以查找术语数量等于指定数量的文档

elasticsearch - Elasticsearch中的整数打印为字符串

group-by - Elasticsearch:如何按查询以外的字段分组?

elasticsearch - 通过多节点集群设置时无法访问Kibana中的elasticsearch实例

elasticsearch - 创建索引时,定义索引映射时 '_doc'有什么意义?

elasticsearch - logstash - 过滤日志并发送到不同的 Elasticsearch 集群

elasticsearch - 使用ElasticSearch Bulk动态更新和创建文档?