我有以下查询,它可以为我提供所有期间(嵌套)+他们所属的房屋,这些房屋在我指定的期间内有到达日期。 现在我想尝试获得某个房子的到来日期,但我无法弄清楚如何在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的房子的到货日期
答案 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)