在 Elasticsearch 查询中使用 distinct 和 where 子句

Use distinct and where clause in Elasticsearch Query

我想从 Elasticsearch 中获取结果作为 Sql 查询

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
      }
    }
  }
}

我还有另一个代码块,它执行 SQL 查询

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

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

你们很亲近。只需结合 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