ElasticSearch-使用一个查询的结果作为另一个的过滤器

时间:2019-11-26 07:05:16

标签: elasticsearch elasticsearch-dsl

我正在尝试将t-sql查询转换为弹性dsl。 我有2个表,我正在尝试通过对第一个查询中的选定Guid进行过滤来从第二个表中获取数据。

SELECT distinct guid INTO #temp                 
FROM table1                  
WHERE code =  13                                    
AND DateDiff(day, log_time, '2019-08-24') = 0                          

SELECT details,CreatedDate,guid
FROM table2           
WHERE guid IN (SELECT guid FROM #temp)          
ORDER BY CreatedDate desc,guid     

我试图在弹性dsl中转换对index1的第一个查询:

{
  "query": { 
    "bool": { 
      "filter": [ 
        { "term":  { "code": 13  }},
        { "range": { "log_time": { "gt" : "2019-08-23 23:59:59.99",
                "lte" :  "2019-08-24 23:59:59.99"}}} 
      ]
    }
  },
   "_source": {
        "includes": ["_id", "guid"],
        "excludes": []
    }
}

现在,我想将此查询返回的guids用作对index2的第二次查询中的过滤器。 在Elasticsearch中这可能吗? 我知道Elasticsearch不支持联接。但是,有什么方法可以在Elasticsearch中执行子查询吗?

我调查了terms lookup,但似乎这仅适用于文档的_id。 但是在我的情况下,guid(它是sql-server中的唯一标识符)将只是elasticasearch中的文档属性。

是否有一种方法可以调整术语查找以在_id以外的其他字段上工作?

0 个答案:

没有答案