在Elasticsearch Query中使用distinct和where子句

时间:2016-02-11 09:39:55

标签: elasticsearch nest

我想从Elasticsearch获取结果作为Sql Query

select distinct(id) from table where E_id in (5,6) and P_id=54

我需要构建代码块以使用elasticsearch中的聚合获取不同的值,如下所示

GET /Index/Type/_search?search_type=count
{
  "aggs": {
    "my_fields": {
      "terms": {
        "field": "ID",
        "size": 0
      }
    }
  }
}

我有另一个代码块,它执行where查询的SQL子句作业

GET /index/type/_search
{
    "query": {
        "bool": {            
            "must": [
               {
                  "terms": {
                    "ID": [ "5","6" ]          
                  }
                },
                {
                  "terms": {
                    "ProjectID": [ "54"]
                  }
                }
            ]
        }
    }
}

如何整合这两个块并使用elasticsearch中的where子句获得不同的结果。

1 个答案:

答案 0 :(得分:1)

你非常接近。只需合并queryaggregation

{
  "query": {
    "bool": {
      "must": [
        {
          "terms": {
            "ID": [
              "5",
              "6"
            ]
          }
        },
        {
          "terms": {
            "ProjectID": [
              "54"
            ]
          }
        }
      ]
    }
  },
  "aggs": {
    "my_fields": {
      "terms": {
        "field": "ID",
        "size": 0
      },
    "aggs":{
      "top_hits_log"   :{
       "top_hits"   :{
           "size" :1
       }
      }
     }
    }
  }
}

关于top_hits here

的研究