我正在尝试将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以外的其他字段上工作?