弹性嵌套查询

时间:2018-06-09 11:11:56

标签: elasticsearch nested-queries

鉴于以下简单文件:

output

我想找到与具有某个特定单位的条目具有相同时间戳的所有条目。在伪sql中我正在寻找查询:

{
   time: 1234545455,
   value: 50.6,
   unit: 'test'
}

如何在ElasticSearch中完成?

1 个答案:

答案 0 :(得分:0)

您可以使用聚合与过滤器来获取时间,并使用结果执行第二次查询以获取文档。

获取相关时间的第一个查询

  "size" : 0,
  "aggs" : {
    "relevant_time": {
      "filter": {
        "bool": {
          "must": [
            {
              "match": {
                "unit": "some-unit"
              }
            }
          ]
        }
      },
      "aggs": {
        "filterd_time": {
          "terms": {
            "field": "time"
          }
        }
      }
    }
  }

对于第二个查询,迭代存储桶返回并使用术语查询中的related_time来获取整个文档。