查找某个父级的嵌套结果

时间:2017-04-14 11:50:41

标签: elasticsearch

我有以下查询,它可以为我提供所有期间(嵌套)+他们所属的房屋,这些房屋在我指定的期间内有到达日期。 现在我想尝试获得某个房子的到来日期,但我无法弄清楚如何在Elasticsearch中执行此操作的语法。

GET /houses/house/_search
{
  "_source" : ["HouseId"],
 "query": {
 "nested": {
  "path": "Periods",
  "query": {
    "bool": {
      "must": [
        {"range": {
          "Periods.ArrivalDate": {
          "gte" : "2017-10-01",
          "lt" : "2017-11-01"
         }
        }
       }
     ]
    }
  },
"inner_hits" : {}
}

} }

映射是这个(缩写为我希望相关部分)

{
"houses": {
  "mappings": {
     "house": {
        "properties": {
           "Periods": {
              "type": "nested",
              "properties": {
                 "ArrivalDate": {
                    "type": "date",
                    "format": "yyyy-MM-dd"
                 },

 ....
           "HouseId": {
              "type": "keyword"
           },

所以我想在一个月内找到一个有特定HouseId的房子的到货日期

2 个答案:

答案 0 :(得分:0)

我想我已经弄明白了,但如果有更好的解决方案,请告诉我们:

{
"_source":[
  "HouseCode",
  "Country",
  "Region"
],
"query":{
  "bool":{
     "must":[
        {
           "match":{
              "HouseId":"someid"
           }
        },
        {
           "nested":{
              "path":"Periods",
              "query":{
                 "range":{
                    "Periods.ArrivalDate":{
                       "gte":"2017-05-01",
                       "lt":"2017-06-01"
                    }
                 }
              },
              "inner_hits":{
                 "size":1000
              }
           }
        }
     ]
  }
 }
}

答案 1 :(得分:0)