Elasticsearchj 实现 存在和不存在


Select COUNT(distinct name) 
From index1 
Where date between X and y 
And name in (Select name 
             From index1  
             Where date between p and s) 
弹性

搜索中的等效查询?

过滤器聚合可能是答案。

像这样:

{
  "size" : 0,
  "query" : {
    "filtered" : {
      "query" : {
        "match_all" : { }
      },
      "filter" : {
        "range" : {
          "date" : {
            "from" : "2015-03-10T21:51:47.703-04:00",
            "to" : "2015-03-20T21:51:47.727-04:00",
            "include_lower" : true,
            "include_upper" : true
          }
        }
      }
    }
  },
  "aggregations" : {
    "names1" : {
      "filter" : {
        "range" : {
          "date" : {
            "from" : "2015-02-28T21:51:47.733-05:00",
            "to" : "2015-03-20T21:51:47.734-04:00",
            "include_lower" : true,
            "include_upper" : true
          }
        }
      },
      "aggregations" : {
        "names2" : {
          "terms" : {
            "field" : "name"
          }
        }
      }
    }
  }
}

最新更新