弹性嵌套查询
Nested query in elastic
给定以下简单文档:
{
time: 1234545455,
value: 50.6,
unit: 'test'
}
我想查找与具有特定单位的条目具有相同时间戳的所有条目。在伪 sql 中,我正在寻找查询:
SELECT * from xyz WHERE time IN (SELECT time from xyz WHERE unit = 'some-unit')
如何在 ElasticSearch 中完成此操作?
您可以使用带过滤器的聚合来获取时间,并使用结果进行第二次查询以获取文档。
先查询得到相关时间
"size" : 0,
"aggs" : {
"relevant_time": {
"filter": {
"bool": {
"must": [
{
"match": {
"unit": "some-unit"
}
}
]
}
},
"aggs": {
"filterd_time": {
"terms": {
"field": "time"
}
}
}
}
}
对于第二个查询,遍历存储桶returns并使用术语查询中的relevant_time来获取整个文档。
给定以下简单文档:
{
time: 1234545455,
value: 50.6,
unit: 'test'
}
我想查找与具有特定单位的条目具有相同时间戳的所有条目。在伪 sql 中,我正在寻找查询:
SELECT * from xyz WHERE time IN (SELECT time from xyz WHERE unit = 'some-unit')
如何在 ElasticSearch 中完成此操作?
您可以使用带过滤器的聚合来获取时间,并使用结果进行第二次查询以获取文档。
先查询得到相关时间
"size" : 0,
"aggs" : {
"relevant_time": {
"filter": {
"bool": {
"must": [
{
"match": {
"unit": "some-unit"
}
}
]
}
},
"aggs": {
"filterd_time": {
"terms": {
"field": "time"
}
}
}
}
}
对于第二个查询,遍历存储桶returns并使用术语查询中的relevant_time来获取整个文档。